C#窗体文本框验证错误

本文关键字:验证 错误 文本 窗体 | 更新日期: 2023-09-27 18:21:10

我有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中按退格键(或清除数据)时,我都会出现格式错误。当我把一个字母放进去时,我也会遇到一个错误。如果用户输入了一个字母,当数据被清除时,我该如何防止它出现一个遗嘱?此外,当我为前设置更大的值时,会出现另一个错误

支付金额=600,我输入=1000,余额文本框=550,更改文本框=330。它计算不正确。有人能帮我吗?

C#窗体文本框验证错误

在处理货币时,通常最好使用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();
}