我有一些代码循环遍历我的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);
}
}
}
答案 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))
{
// ...
}