使用foreach循环检索GroupBox中的TextBox

时间:2011-11-22 09:06:22

标签: c# .net winforms

我在WinForm中有十个组框。每个组框包含10个文本框,我已经定义了每个TextBox名称。如何使用foreach循环获取每个文本框?

4 个答案:

答案 0 :(得分:14)

 foreach(Control gb in this.Controls)
 {
       if(gb is GroupBox)
       {
          foreach(Control tb in gb.Controls)
          {
             if(tb is TextBox)
             {
                 //here is where you access all the textboxs.
             }
          }
       }
 }

但是如果你定义了每个TextBox名称 通过循环获取每个TextBox有什么意义?

您可以定义List<TextBox>以在创建每个TextBox时保留其引用,然后只需访问List即可访问每个TextBox

答案 1 :(得分:6)

这是我的建议:

foreach(var groupBox in Controls.OfType<GroupBox>())
{
    foreach(var textBox in groupBox.Controls.OfType<TextBox>())
    {
        // Do Something
    }
}

或者将它放在一个循环中:

foreach (var textBox in Controls.OfType<GroupBox>().SelectMany(groupBox => groupBox.Controls.OfType<TextBox>()))
{
    // Do Something
}

答案 2 :(得分:1)

尝试以下代码,

Control.ControlCollection coll = this.Controls;
foreach(Control c in coll) {
  if(c != null)
}

答案 3 :(得分:0)

foreach (var ctrl in gbDatabaseColumns.Controls)
{
     if (ctrl is DevExpress.XtraEditors.TextEdit)
     {
        StoreTextEdit(config, (ctrl as DevExpress.XtraEditors.TextEdit));
     }
}