Использование цикла foreach для извлечения TextBox в GroupBox - PullRequest
3 голосов
/ 22 ноября 2011

У меня есть десять групповых блоков в WinForm. Каждое групповое поле содержит 10 текстовых полей, и я определил каждое TextBox имя. Как я могу получить каждое текстовое поле, используя цикл foreach?

Ответы [ 4 ]

14 голосов
/ 22 ноября 2011
 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.

6 голосов
/ 22 ноября 2011

Вот мое предложение:

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
}
1 голос
/ 22 ноября 2011

попробуйте следующий код,

Control.ControlCollection coll = this.Controls;
foreach(Control c in coll) {
  if(c != null)
}
0 голосов
/ 09 августа 2013
foreach (var ctrl in gbDatabaseColumns.Controls)
{
     if (ctrl is DevExpress.XtraEditors.TextEdit)
     {
        StoreTextEdit(config, (ctrl as DevExpress.XtraEditors.TextEdit));
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...