将用户控件中动态添加的文本框值添加到主窗体

时间:2016-11-22 02:01:40

标签: c# winforms

在我的主要表单中,我有一个文本框textBoxTotalTotal,我希望所有动态添加的文本框都是我textBoxTotalTotal中添加的/总和。我该如何实现? 在我的主要形式中,我有这个: textBoxTotalTotal
然后在我的用户控件中我有这个

 public void textBoxTranspo_TextChanged(object sender, EventArgs e)
   {
  int intTranspo = 0, intBoxDaily = 0;
   if (int.TryParse(textBoxTranspo.Text, out intTranspo) && int.TryParse(textBoxDaily.Text, out intBoxDaily))
   textBoxTotalAmount.Text = (intTranspo + intBoxDaily).ToString();
    }

public void textBoxDaily_TextChanged(object sender, EventArgs e)
       {
      int intTranspo = 0, intBoxDaily = 0;
       if (int.TryParse(textBoxTranspo.Text, out intTranspo) && int.TryParse(textBoxDaily.Text, out intBoxDaily))
       textBoxTotalAmount.Text = (intTranspo + intBoxDaily).ToString();
        }

请注意,我正在通过主窗体中的按钮动态添加用户控件。所以textBoxTotalTotal应该在新的2个文本框出现时添加它们。

1 个答案:

答案 0 :(得分:0)

假设UserControls'Parent是Form1和用户控件类型MyUserControl: (您应该设置正确的父级和用户控件类型)

MyUserControl[] controls = Form1.Controls.OfType<MyUserControl>().ToArray();
int Total = 0;
for(int i=0;i<controls.Length;i++){
    controls[i].Controls.OfType<TextBox>().ToList()
    .ForEach(txt => Total += int.Parse(txt.Text));
}

如果您是从UserControl本身那样做的话,那么:

MyUserControl[] controls = Parent.Controls.OfType<MyUserControl>().ToArray();
int Total = 0;
for(int i=0;i<controls.Length;i++){
    controls[i].Controls.OfType<TextBox>().ToList()
    .ForEach(txt => Total += int.Parse(txt.Text));
}