Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows窗体计算C#_C#_Windows_Decimal - Fatal编程技术网

Windows窗体计算C#

Windows窗体计算C#,c#,windows,decimal,C#,Windows,Decimal,我正在使用C#开发Windows税务应用程序。其中一个表单包含多个文本框(小数和整数)以及这些文本框值的总和 例:我有Txt1、TXT2、TX3和TXTOTALL 我希望能够进行现场计算,比如只要用户修改Txt 1的值,总数就应该得到更新,显示在TXTOTALL上,而无需单击任何按钮。如何实现这一点?使表单的每个输入文本框使用相同的TextChanged事件,并将TXTotal的ReadOnly属性设置为True // Here just to clarify, you could use

我正在使用C#开发Windows税务应用程序。其中一个表单包含多个文本框(小数和整数)以及这些文本框值的总和

例:我有Txt1、TXT2、TX3和TXTOTALL


我希望能够进行现场计算,比如只要用户修改Txt 1的值,总数就应该得到更新,显示在TXTOTALL上,而无需单击任何按钮。如何实现这一点?

使表单的每个输入文本框使用相同的TextChanged事件,并将TXTotal的ReadOnly属性设置为True

 // 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

使表单的每个输入文本框使用相同的TextChanged事件,并将txtotal的ReadOnly属性设置为True

 // 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

使用文本更改事件使用文本更改事件Hi Steve,非常感谢您的回复!!您共享的代码正在运行,但是,总体情况变得一团糟。例:最初t1、t2和t3各有1、1、1,Ttotal为3,我将t1从1更改为5,总计更新为7,这是正确的。然后我把t2值从1改为5,Ttotal从7改为15,其中应该是11,这很奇怪。刚刚测试过,这不应该发生。您确定键入的代码正确吗?(特别是看最后的添加或TryParse中使用的txt框)是的,我做了..下面是更改后的代码private void(object sender,EventArgs e){int t1;int t2;int t3;Int32.TryParse(txtuinumworkers 1.Text,out t1);Int32.TryParse(txtUINumWorkers2.Text,out t2);Int32.TryParse(txtUINumWorkers2.Text,out t3);txtUINumWorkersTotal.Text=(t1+t2+t3).ToString();}最后一次转换再次使用TxtInumWorkers 2.Text而不是TxtInumWorkers 3.Text噢…这是我的错,我太蠢了。我很抱歉..你是对的。很抱歉打扰你。非常感谢!!嗨,史蒂夫,非常感谢你的回复!!你共享的代码正在工作,但是,总数变得一团糟..例如:最初t1,t2和t3有1,1,1每个和Ttotal都是3,我将T1从1更改为5,总计更新为7,这是正确的。然后我将t2值从1更改为5,Ttotal从7更新为15,其中应该是11。这很奇怪。刚刚测试过,不应该发生这种情况。您确定键入的代码正确吗?(特别是看最后的添加或TryParse中使用的txt框)是的,我做了..下面是更改后的代码private void(object sender,EventArgs e){int t1;int t2;int t3;Int32.TryParse(txtuinumworkers 1.Text,out t1);Int32.TryParse(txtUINumWorkers2.Text,out t2);Int32.TryParse(txtUINumWorkers2.Text,out t3);txtUINumWorkersTotal.Text=(t1+t2+t3).ToString();}最后一次转换再次使用TxtInumWorkers 2.Text而不是TxtInumWorkers 3.Text噢…这是我的错,我太愚蠢了。我很抱歉..你是对的。很抱歉打扰你。非常感谢!!