【问题标题】:How to update/change/empty data in txtbox without showing error如何在文本框中更新/更改/清空数据而不显示错误
【发布时间】:2014-04-22 15:25:50
【问题描述】:

我正在 WF 上处理小额销售发票申请。我有一个客户表和一个产品表。然后,我通过销售表单上的组合框填充客户名称和产品名称。一旦用户从 ProductName 组合框中选择了一个项目,其他文本框(如 Price 和 ProductID)就会自动填充数据库中 Product Table 中的数据。我还有一个名为 txtQuantity 的文本框,可以输入产品订单的数量。一旦为数量、小计、GST(新加坡的税)和总计输入数字,就会自动计算这些值,并且这些值会显示在小计、GST 和总计的文本框中。当用户删除要更新/更改的数量时,它显示错误为“未处理格式异常,输入字符串的格式不正确”。当用户删除数量或想要更改为新值时,我希望防止此错误停止运行我的应用程序。我该怎么做,因为我在这里完全迷失了。下面是我的代码。

private void txtQuantity_TextChanged(object sender, EventArgs e)
{
   int iQuantity = Convert.ToInt32(txtQuantity.Text);

   decimal dPrice = Convert.ToDecimal(txtPrice.Text);

   decimal dSubtotal = dPrice * iQuantity;
   decimal dGST = dSubtotal * 7/100;
   decimal dTotal = dSubtotal + dGST;

    txtSubTotal.Text = Convert.ToString(dSubtotal);
    txtGST.Text = Convert.ToString(dGST);
    txtTotal.Text = Convert.ToString(dTotal);

}

我还想将数量文本框的参数设置为仅用于输入数字。我稍后会这样做。这将是另一件需要探索的事情。对此的任何建议也受到欢迎和赞赏。

【问题讨论】:

  • 您需要学习如何调试,这样您才能找到引发异常的行并自己了解问题所在。我的猜测是 txtQuantitytxtPrice 是空白的,而您的 Convert 函数失败。你可以在做任何事情之前简单地检查这些(使用string.IsNullOrEmpty())。
  • 您应该使用int.TryParsedecimal.TryParse 来查看数据是否与数据类型兼容。

标签: c# winforms textbox keypress textchanged


【解决方案1】:

在尝试将它们分配给整数变量之前,我会通过以下(或类似的)运行所有字符串输入,尤其是在处理直接用户输入时。

string myVar1;

//Something that assigns a value to myVar1

if(String.IsNullOrEmpty(myVar1))
{
 myVar1 = "0";
}
else
{
  int number;
  bool result = Int32.TryParse(myVar1, out number);
  if (result)
  {
     //you have a valid input and valid parse, do whatever you need with number     variable     
  }
  else
  {
    //bad input, reset to blank and show error message
  }

}

请注意,上面的代码是一个示例,虽然与您可能想要的相当接近,但您需要先对其进行修改,然后再将其复制/粘贴到您的应用程序中

【讨论】:

  • 感谢您的示例代码。我已经根据您的代码弄清楚了。现在工作正常。现在,我将探索更多如何计算文本框中的数量和表格中的数量。我在产品表中有数量。文本框中的数量将检查产品表中的数量,以查看是否有足够的库存进行销售。如果是这样,包括其他项目的数量将保存在销售表中。我还没有编码。我仍然需要对此进行研究。请对此事进行任何指导。
  • 不确定你的要求,如果你有两个数量,你应该能够检查它们是否相等,或者一个小于或大于另一个
猜你喜欢
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-26
  • 2014-02-02
  • 1970-01-01
  • 2013-09-08
  • 1970-01-01
相关资源
最近更新 更多