Windows窗体计算C#

我正在使用C#处理Windows税务申请。 我有一个窗体包含多个文本框(小数和整数)和这些文本框值的总和。

例如:我有Txt1,Txt 2和Tx 3和TxtTotal

我希望能够进行现场计算,就像用户修改Txt 1的值一样,总计应该得到更新数量显示在Txttotal上,而无需点击任何button。 我怎样才能做到这一点?

    使您的窗体的每个输入文本框使用相同的TextChanged事件,并将ReadOnly属性设置为True为TxtTotal

    // Here just to clarify, you could use // the Form designer to register this event handler Txt1.TextChanged += onChanged; Txt2.TextChanged += onChanged; Txt3.TextChanged += onChanged; TxtTotal.ReadOnly = true; 

    现在编写TextChanged事件处理程序到这样的事情

      private void onChanged(object sender, EventArgs e) { int t1; int t2; int t3; Int32.TryParse(Txt1.Text, out t1); Int32.TryParse(Txt2.Text, out t2); Int32.TryParse(Txt3.Text, out t3); txtTotal.Text = (t1+t2+t3).ToString(); } 

    此代码假定每个文本框都包含一个整数,并且不关心文本框是否为空或包含无法转换为整数的文本。 在这种情况下,转换后的变量值将为零,不会改变结果。

    如果你想发出错误信息,将需要更多的代码。 如果你有小数,然后使用适当的十进制变量和decimal.TryParse而不是Int32.TryParse

    我想你应该使用TextBox Leave事件。 如果您使用TextChanged事件,计算可能是错误的。 为什么? 因为当用户输入1和2时,总数将是13(1是第一次改变,12是第二次改变)

    我建议你使用Leave事件来进行计算。 现在,代码Text1控件的Leave事件就像我一样,使其他文本框使用相同的事件。

      private void Txt1_Leave(object sender, EventArgs e) { TextBox myTextBox = (TextBox) sender //I assume that the int "total" is the variable you assign to txtTotal Control total + = int.Parse(myTextBox.Text); txtTotal = total.ToString(); } 

    现在,将Txt1_Leave事件分配给其他TextBox控件。 当用户删除TextBox控件中的所有内容时,也应该处理空字符串