使用foreach循环检索GroupBox中的TextBox

han*_*int 3 .net c# winforms

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

Bol*_*olu 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.
             }
          }
       }
 }
Run Code Online (Sandbox Code Playgroud)

但是,如果您已经定义了每个TextBox名称, 那么TextBox循环获取每个名称的重点是什么?

您可以在创建它们时定义a List<TextBox>来保存每个引用TextBox,然后只需通过它List来获取每个引用TextBox.


Fis*_*aen 6

这是我的建议:

foreach(var groupBox in Controls.OfType<GroupBox>())
{
    foreach(var textBox in groupBox.Controls.OfType<TextBox>())
    {
        // Do Something
    }
}
Run Code Online (Sandbox Code Playgroud)

或者在一个循环中:

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