C#WinForms-自动添加两个文本框
我正在构建这个三个文本框,如果两个文本框被填充,那么当我输入10+10时,将显示总和。结果是1010。安博迪能帮我吗 这是我的密码:C#WinForms-自动添加两个文本框,c#,.net,winforms,int,type-conversion,C#,.net,Winforms,Int,Type Conversion,我正在构建这个三个文本框,如果两个文本框被填充,那么当我输入10+10时,将显示总和。结果是1010。安博迪能帮我吗 这是我的密码: public void textBoxTranspo_TextChanged(object sender, EventArgs e) { if (!string.IsNullOrEmpty(textBoxTranspo.Text) && !string.IsNullOrEmpty(textBoxDaily.Text)) t
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();
int intTranspo=0,intBoxDaily=0;
if(int.TryParse(textBoxTranspo.Text,out intTranspo) && int.TryParse(textBoxDaily.Text,out intBoxDaily))
textBoxTotalAmount.Text = (intTranspo + intBoxDaily).ToString();
编辑:
这只是创建干净/整洁且可读性更强的代码的一种方法。另一个回答是这样的
textBoxTotalAmount.Text = (Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text)).ToString();
也是正确的,但是如果其他程序员也会阅读代码,那么我写的第一个代码可读性更好,在本例中效率更高
您得到的是1010,因为您将.ToString()
放错了位置。请按以下方式操作:
int ans = 0;
ans = Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text);
textBoxTotalAmount.Text = ans.ToString();
int intTranspo=0,intBoxDaily=0;
if(int.TryParse(textBoxTranspo.Text,out intTranspo) && int.TryParse(textBoxDaily.Text,out intBoxDaily))
textBoxTotalAmount.Text = (intTranspo + intBoxDaily).ToString();
编辑:
这只是创建干净/整洁且可读性更强的代码的一种方法。另一个回答是这样的
textBoxTotalAmount.Text = (Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text)).ToString();
也是正确的,但是如果其他程序员也会阅读代码,那么我写的第一个代码可读性更好,在本例中效率更高
您得到的是1010,因为您将.ToString()
放错了位置,可能应该是:
textBoxTotalAmount.Text = (Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text)).ToString();
也许应该是:
textBoxTotalAmount.Text = (Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text)).ToString();
这是+
操作符的魔力(多态性)。如果操作数是数值类型(int、long、double),它将添加两个操作数的值;如果操作数是字符串类型,甚至是一个字符串和第二个整数类型,它将连接两个操作数(与您的情况类似)。在本例中,转换后的.ToString()
会产生问题。通过将其从该行中删除,您将获得预期的结果
另一个注意事项:Convert.ToInt32
如果输入文本不可转换,将抛出FormatException
,因此使用必须使用int.TryParse
将文本转换为整数。因此,代码如下所示:
int ans = 0;
ans = Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text);
textBoxTotalAmount.Text = ans.ToString();
int intTranspo=0,intBoxDaily=0;
if(int.TryParse(textBoxTranspo.Text,out intTranspo) && int.TryParse(textBoxDaily.Text,out intBoxDaily))
textBoxTotalAmount.Text = (intTranspo + intBoxDaily).ToString();
这是+
操作符的魔力(多态性)。如果操作数是数值类型(int、long、double),它将添加两个操作数的值;如果操作数是字符串类型,甚至是一个字符串和第二个整数类型,它将连接两个操作数(与您的情况类似)。在本例中,转换后的.ToString()
会产生问题。通过将其从该行中删除,您将获得预期的结果
另一个注意事项:Convert.ToInt32
如果输入文本不可转换,将抛出FormatException
,因此使用必须使用int.TryParse
将文本转换为整数。因此,代码如下所示:
int ans = 0;
ans = Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text);
textBoxTotalAmount.Text = ans.ToString();
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";
}
为了避免混淆,首先,尝试将文本框的值转换为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))
删除语句末尾的
toString
textBoxTotalAmount.Text = (Convert.ToInt32(textBoxTranspo.Text) + Convert.ToInt32(textBoxDaily.Text))
想添加一些解释吗,为什么这个和为什么不OP'scare添加一些解释,为什么这个和为什么不OP'scare添加一些解释,为什么这个和为什么不OP'scare添加一些解释,为什么这个和为什么不OP'sHi,我理解你的答案,谢谢你,但是就像你说的,我试着删除你说的
.ToString()
但是它说不能隐式地将类型“int”转换为“string”
但是,总的来说,它就像一个符咒!谢谢,但它真的意味着我把intinttransp=0,intBoxDaily=0代码>在两个不同的公共空间中
?这不是一种冗余吗?或者这就是它的方式?是的,在使用之前必须声明这些变量。由于您将它们作为out参数传递给TryParse方法。您好,我理解您的答案并为此感谢您,但正如您所说的,我尝试删除您所说的.ToString()
,但它说无法隐式地将类型“int”转换为“string”
,但总体而言,它工作起来很有魅力!谢谢,但它真的意味着我把intinttransp=0,intBoxDaily=0代码>在两个不同的公共空间中
?这不是一种冗余吗?或者这就是它的方式?是的,在使用之前必须声明这些变量。因为您要将它们作为out参数传递给TryParse方法。