我有一个窗体,下面列出了控件 的 PANEL1 button1 =添加新手机 button2 = ok 单击button1时,会添加usercontrol。您可以根据需要添加尽可能多的userControl。 userControl定义包含五个控件:
combobox1 combobox2 TextBox1的 TextBox2中 textbox3
我想添加所有动态生成的usercontrol控件的textbox3文本并设置为winform上的标签我该怎么办?单击确定按钮 我试过这段代码
foreach (Control ctrl in panel1.Controls)
{
if (ctrl is UserControl)
{
UserControl1 myCrl = ctrl as UserControl1;
int g;
// but this doesnt happen an error is coming
g += Convert.ToInt32(myCrl.textbox3.Text);
}
}
如何获取所有动态生成的控件文本的总和
答案 0 :(得分:2)
int sum = 0;
panel1.Controls.OfType<UserControl>().ToList().ForEach(
x =>
{
TextBox ctl = x.Controls.OfType<TextBox>().Where(y => y.Name == "textbox2").FirstOrDefault();
sum += (ctl == null ? 0 : (!String.IsNullOrEmpty(ctl.Text.Trim()) ? Convert.ToInt32(ctl.Text.Trim()) : 0));
}
);
答案 1 :(得分:1)
可能你的“错误”是你在g
循环中声明foreach
,所以你实际上并没有任何总和。此外,您不初始化它。将您的代码更改为:
var g = 0;
foreach (Control ctrl in Controls)
{
if (ctrl is UserControl1)
{
var myCrl = ctrl as UserControl1;
g += Convert.ToInt32(myCrl.textbox2.Text);
}
}
//Set your label's text
答案 2 :(得分:1)
double totalSumValue = 0;
foreach (Control ctrl in Controls)
{
if (ctrl is UserControl)
{
var myCrl = ctrl as UserControl;
totalSumValue += Convert.ToInt32(myCrl.textbox3.Text);
}
}
lblSumValue.text=totalSumValue.toString();