【问题标题】:C# Winform Textbox Validation ErrorC# Winform 文本框验证错误
【发布时间】:2012-01-23 17:03:15
【问题描述】:

我有 4 个textboxes

  1. 支付金额
  2. 钱(验证客户的钱)
  3. 零钱(如果钱大于金额)
  4. 和余额(如果钱小于金额)

最后一个textbox 用于输入(获取/输入客户的钱)。

我已将我的代码放入 textBoxInput 的 TextChanged 处理程序中(我认为每次用户在该文本框中输入内容时都会自动更新):

private void textBoxInput_TextChanged(object sender, EventArgs e)
{
    textBoxMoney.Text = textBoxInput.Text;

    if (int.Parse(textBoxAmount.Text) > int.Parse(textBoxMoney.Text))
    {
        int balance = int.Parse(textBoxAmount.Text) - int.Parse(textBoxMoney.Text);
        textBoxBalance.Text = balance.ToString();
    }

    if (int.Parse(textBoxMoney.Text) > int.Parse(textBoxAmount.Text))
    {
        int change = int.Parse(textBoxMoney.Text) - int.Parse(textBoxAmount.Text);
        textBoxChange.Text = change.ToString();
    }
}

它运行正常,但是每当我在textbox 中按退格键(或清除数据)时,都会出现格式错误。当我在里面放一封信时,我也会得到一个错误。如果用户输入字母并且数据被清除,我该如何防止它出现?此外,当我为 ex 设置更大的值时,会出现另一个错误。

要支付的金额 = 600,我输入 = 1000,余额文本框有 = 550,零钱文本框有 = 330。它计算不正确。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: c# winforms validation textbox


    【解决方案1】:

    在处理金钱时,通常最好使用Decimal 类型而不是Integer,但对于您的示例,使用TryParse() 方法而不是Parse 可能更好。发生格式错误是因为当您退格时,文本框为空并且解析失败。

    快速返工:

    private void textBoxInput_TextChanged(object sender, EventArgs e) {
      textBoxMoney.Text = textBoxInput.Text;
    
      int amount = 0;
      int money = 0;
      int balance = 0;
      int change = 0;
    
      int.TryParse(textBoxAmount.Text, out amount);
      int.TryParse(textBoxMoney.Text, out money);
    
      if (amount > money)
        balance = amount - money;
      if (money > amount)
        change = money - amount;
    
      textBoxBalance.Text = balance.ToString();
      textBoxChange.Text = change.ToString();
    }
    

    【讨论】:

    • 非常感谢先生!我将不得不研究 parse 和 tryparse 之间的区别:))
    • @rjtubera 这是MSDN: Int32.TryParse Method的链接
    • 我建议通过不允许这些 TextBox-es 上的字母只接受十进制数字来处理 KeyPressEvent。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 2012-01-03
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2015-11-23
    相关资源
    最近更新 更多