C# 用winform实现,循环textbox判断并赋值给lable

有5个textbox,对应的有5个lable标签。单击按钮后,循环判断textbox里的值,如果为空则对应标签显示0,不为空则lable标签显示对应的textbox中的值。

这种方法不需要循环,无复杂逻辑,也部用点击按钮,代码量少
5五个文本框 Txt_valueA,Txt_valueB,Txt_valueC,Txt_valueD,Txt_valueE.
5个对饮的lable:valueA,valueB,valueC,valueD,valueE
将文本框的值全部设置为空,lable的值全部设置成0
然后实现一个文本框的 txt_valueA_TextChanged事件
private void txt_valueA_TextChanged(object sender, EventArgs e)
{
TextBox tb = (TextBox)sender;
Label lbl=(Label)pan_father.Controls[tb.Name.Split('_')[1]];
lbl.Text = tb.Text == string.Empty ? "0" : tb.Text;
}
最后关键的一步
将其他的4个文本框的TextChanged事件全部指向 txt_valueA_TextChanged这个方法就可以了。
3行代码了事,如果有1000个这样的情况,也只有3行代码。运行程序看效果即可!注:pan_father是一个panle
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-20
如下代码可以满足你的要求,希望对你有帮助
5个TextBox的Name分别是textbox1,textbox2,textbox3,textbox4,textbox5,5个Label的Name分别是label1,label2,label3,label4,label5,然后按钮点击事件里加入:
for (int i = 1; i <= 5; i++)
{
Control[] coltb = this.Controls.Find("textbox" + i.ToString(), false);
Control[] colLabel = this.Controls.Find("label" + i.ToString(), false);
if (coltb != null && colLabel != null)
{
TextBox tb = coltb[0] as TextBox;
Label lb = colLabel[0] as Label;
if (tb.Text.Length > 0)
lb.Text = tb.Text;
else
lb.Text = "0";
}
}
第2个回答  2014-03-21
foreach(var item in this.controls){

if(item is TextBox){
foreach(var itemlbl in this.controls){
if(itemlbl is Label){

if(((Label)itemlbl).Name.SubString(取Name值的数字部分)==item的Name的数字部分)
{
if(((TextBox)item).Text=="")
((Label)itemlbl).Text= "0";
else
((Label)itemlbl).Text= ((TextBox)item).Text;
continue;
}

}
}
}
}本回答被网友采纳
第3个回答  2014-03-20
点击按键后依次对五个textbox进行判断,如果为空则设置相应lable的text为0,如果不为空就设置lable的text为对应的textbox的text
相似回答