尝试使用TextChanged作为事件将结果的总和相乘并得到结果的总和

时间:2017-12-13 16:16:58

标签: c# math textchanged

我是使用C#和Visual Studio的新手,我遇到了问题。

我尝试使用TextChanged事件计算三次不同乘法的总值,因此每次我在用于乘法的文本框中输入数字时,总文本框都会更新。

textbox4中的总结果始终为0.我在这里做错了什么?

这是我的代码

    public double multip_result1;
    public double multip_result2;
    public double multip_result3;

    public void textbox1_TextChanged(object sender, EventArgs e)
    {
       double a, b, multip_result1;
       a = Double.Parse(textbox1.Text);
       b = 4.50;

       multip_result1 = a * b;

       total();
    }

    public void textbox2_TextChanged(object sender, EventArgs e)
    {
        double d, f, multip_result2;
        d = double.Parse(textbox2.Text);
        f = 6.50;

        multip_result2 = d * f;

        total();
    }

    public void textbox3_TextChanged(object sender, EventArgs e)
    {
        double h, j, multip_result3;
        h = double.Parse(textbox3.Text);
        j = 8.50;

        multip_result3 = h * j;

        total();
    }

    public void total() 
    {
        double total_sum;
        total_sum = multip_result1 + multip_result2 + multip_result3;
        textbox4.Text = total_sum.ToString();
    }

2 个答案:

答案 0 :(得分:5)

您有局部变量multip_result2multip_result3double a, b, multip_result1; ,它们隐藏了具有相同名称的字段,只需从事件处理程序中删除它们即可。所以f.e.这样:

double a, b;

变为

this.fieldName

否则您将计算值分配给此局部变量,该字段保持为0。

如果要分配给具有相同名称的字段,您还可以使用donation ( id donation int, blood_type varchar(45), blood_amount float ) 。但我强烈建议不要使用相同的名称来避免这样的问题。

答案 1 :(得分:0)

在每个更改函数中,您正在初始化multip_result1,multip_result2和multip_result3。

这意味着它没有设置更多公共版本,因此当“total()”运行时,所有值仍为零。

“double a,b,multip_result1;”应该是“双a,b;”并相应地更新其他功能。