首页 > 解决方案 > 将两个文本框的数值相加并在第三个文本框中实时显示

问题描述

我正在尝试制作一种我将投入textchangedkeypress活动的方法。在该方法中,我从文本框中解析值int,然后将其提供给该方法,以便它将这些值相加并将它们作为字符串返回。但是当我在运行时删除文本框的内容以便我可以使用不同的值时,它就像一个字符串而不是一个值,并抛出System.Format exeption该方法具有不同的数据类型。

这是引发错误的方法的调用:

vys = Addup(Convert.ToInt32(textBox3.Text), 
            Convert.ToInt32(textBox2.Text), 
            Convert.ToInt32(numericUpDown1.Value)).ToString();

label1.Text = vys;

标签: c#

解决方案


在处理用户输入时,我们应该验证它。例如,如果用户只是清除 textBox12怎么办?是的,因为空文本不是有效的整数,所以会抛出. Convert.ToInt32(textBox2.Text)System.Format exeption

让我们在以下帮助下进行验证TryParse

  if (int.TryParse(textBox3.Text, out var v3) &&
      int.TryParse(textBox2.Text, out var v2) &&
      numericUpDown1.Value >= int.MinValue && numericUpDown1.Value <= int.MaxValue) {
    // All three values are valid integers
    // The result will be Decimal, that's why we can skip 
    // IntegerOverflowException prevention.
    // Order matters: 0m + 2_000_000_000 + 2_000_000_000 = 4_000_000_000m
    //                2_000_000_000 + 2_000_000_000 + 0m - Exception (overflow)
    label1.Text = (numericUpDown1.Value + v3 + v2).ToString();  
  }
  else {
    // At least one value is not a valid Int32
    label1.Text = "???";
  }

推荐阅读