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

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

我正在构建这个三个文本框,如果两个文本框被填充,那么当我输入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();
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方法。