繁体   English   中英

C#Winform文本框验证错误

[英]C# Winform Textbox Validation Error

我有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。计算不正确。 有人可以帮我吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM