以正确的顺序循环通过groupBox控件

时间:2016-05-11 15:54:57

标签: c# groupbox

我有一些代码循环遍历我的groupBox控件并获取控件的名称。然后它将名称写入文本框。然而,它们循环的顺序需要与名称gb1,gb2,gb3一致...它们现在循环的顺序似乎是它们被创建的顺序(时间顺序) )。我已经整理了设计器代码,因此控件的创建按照我想要的方式排序,但似乎没有任何区别。有什么指针吗?感谢

private void loopThroughControls()
    {
        foreach (Control ctrl in this.Controls)
          {                
            if (ctrl.ToString().StartsWith("System.Windows.Forms.GroupBox"))
            {
              txtEntry.Text += (ctrl.Text + System.Environment.NewLine);
            }
          }
    }

2 个答案:

答案 0 :(得分:1)

扩展Tomas'回答:

  private void LoopThroughControls()
  {
     foreach (var ctrl in this.Controls.OfType<GroupBox>().OrderBy(c => c.Name))
     {
        txtEntry.Text += (ctrl.Text + System.Environment.NewLine);
     }
  }

这将从GroupBox集合中检索Controls个实例,然后按名称对它们进行排序,然后获取您想要的文本内容。

答案 1 :(得分:0)

为什么不在迭代之前对列表进行排序呢?

foreach (var ctrl in this.Controls.OrderBy(c => c.Name))
{
    // ...
}