0

我有一个 Windows 窗体,其中有下面列出的控件 panel1 button1 = 添加新的手机 button2 = ok 当单击 button1 时,添加了一个用户控件。您可以根据需要添加尽可能多的用户控件。userControl 定义由五个控件组成:

组合框1 组合框2 文本框1 文本框2 文本框3

我想添加所有动态生成的用户控件控件的 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);  
      }
}

如何获取所有动态生成的控件文本的总和

4

3 回答 3

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));
            }
            );
于 2013-01-05T06:14:54.013 回答
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
于 2013-01-05T06:07:19.673 回答
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(); 
于 2013-01-05T06:24:06.200 回答