C# WinForms - 自动添加两个文本框

C# WinForms - Adding two textbox automatically

我正在构建这三个文本框,如果两个文本框都已填充,那么当我输入 10 + 10 时,将显示总和。结果是 1010。有人可以帮我解决这个问题吗?

这是我的代码:

public void textBoxTranspo_TextChanged(object sender, EventArgs e) 
{
    if (!string.IsNullOrEmpty(textBoxTranspo.Text) && !string.IsNullOrEmpty(textBoxDaily.Text))
        textBoxTotalAmount.Text = (Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text).ToString());
}

public void textBoxDaily_TextChanged(object sender, EventArgs e)
{   
    if (!string.IsNullOrEmpty(textBoxTranspo.Text) && !string.IsNullOrEmpty(textBoxDaily.Text))
        textBoxTotalAmount.Text = (Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text).ToString());
}

这样做:

int ans = 0;
ans = Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text);
textBoxTotalAmount.Text = ans.ToString();

编辑:

这只是创建 clean/neat 更易读代码的一种方法。其他人这样回答的方式

textBoxTotalAmount.Text = (Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text)).ToString();

也是正确的,但如果其他程序员会阅读代码,那么我写的第一个代码更具可读性,在这种情况下效率更高。

你得到 1010 因为你放错了 .ToString()

也许应该是:

textBoxTotalAmount.Text = (Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text)).ToString();

这就是+运算符的神奇(多态性)。如果操作数是数字类型(int、long、double),它将添加两个操作数的值,如果它们是字符串类型或者甚至是一个字符串和第二个整数(就像你的情况),它将连接两个操作数。在您的情况下,转换后的 .ToString() 会产生问题。通过从该行中删除它,您将获得预期的结果。

附加说明:如果输入文本不可转换,Convert.ToInt32 将抛出 FormatException,因此必须使用 int.TryParse 将文本转换为整数。所以代码看起来像这样:

int intTranspo=0,intBoxDaily=0;

if(int.TryParse(textBoxTranspo.Text,out intTranspo) && int.TryParse(textBoxDaily.Text,out intBoxDaily))
   textBoxTotalAmount.Text = (intTranspo + intBoxDaily).ToString();

为了避免混淆,首先尝试将文本框的值转换成int,成功则放入各自的变量中,否则输出无效提示。

int input1 = 0;
int input2 = 0;

try
{
    input1 = Convert.ToInt32(textBoxTranspo.Text);
    input2 = Convert.ToInt32(textBoxDaily.Text); 
    ans = input1 + input2;


    if (!string.IsNullOrEmpty(textBoxTranspo.Text) && !string.IsNullOrEmpty(textBoxDaily.Text))
    {
        textBoxTotalAmount.Text = ans.ToString();
    }

}
catch (Exception)
{
    textBoxTotalAmount.Text = "Invalid input";
}

删除语句末尾的 toString

textBoxTotalAmount.Text = (Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text))