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))
我正在构建这三个文本框,如果两个文本框都已填充,那么当我输入 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))