C# 以正确的顺序循环通过groupBox控件
我有一段代码,它循环遍历我的groupBox控件并获取控件的名称。然后将名称写入文本框。但是,它们循环的顺序需要与名称一致,即gb1、gb2、gb3。。。它们现在循环的顺序似乎就是它们被创建的顺序(时间方面)。我已经整理了设计器代码,以便按照我希望的方式创建控件,但这似乎没有什么区别。有什么建议吗?谢谢C# 以正确的顺序循环通过groupBox控件,c#,groupbox,C#,Groupbox,我有一段代码,它循环遍历我的groupBox控件并获取控件的名称。然后将名称写入文本框。但是,它们循环的顺序需要与名称一致,即gb1、gb2、gb3。。。它们现在循环的顺序似乎就是它们被创建的顺序(时间方面)。我已经整理了设计器代码,以便按照我希望的方式创建控件,但这似乎没有什么区别。有什么建议吗?谢谢 private void loopThroughControls() { foreach (Control ctrl in this.Controls)
private void loopThroughControls()
{
foreach (Control ctrl in this.Controls)
{
if (ctrl.ToString().StartsWith("System.Windows.Forms.GroupBox"))
{
txtEntry.Text += (ctrl.Text + System.Environment.NewLine);
}
}
}
为什么不在遍历列表之前对其进行排序
foreach (var ctrl in this.Controls.OrderBy(c => c.Name))
{
// ...
}
要扩展Tomas的答案:
private void LoopThroughControls()
{
foreach (var ctrl in this.Controls.OfType<GroupBox>().OrderBy(c => c.Name))
{
txtEntry.Text += (ctrl.Text + System.Environment.NewLine);
}
}
private void LoopThroughControls()
{
foreach(this.Controls.OfType().OrderBy(c=>c.Name)中的var ctrl)
{
txentry.Text+=(ctrl.Text+System.Environment.NewLine);
}
}
这将从
控件
集合中检索组框
实例,然后按它们的名称对它们进行排序,然后获得所需的文本内容。如果更改选项卡索引号,顺序是否会更改?否,并且选项卡顺序设置正确。谢谢,我可以这样做。但希望了解一些控件是如何处理的。控件在创建时会添加到控件
列表中,之后该列表不会重新排序。如果你想让它们按特定的顺序排列,你必须自己对它们进行排序。框架通常通过名称直接引用控件,实际上是搜索列表(尽管实际实现可能是哈希查找…)?(作为一名业余开发者,我完全不知道这一点)是的,这就是一个例子。我本人对WinForms 2.0环境(但现在是4.6 WPF环境)相当陌生,但我很快就学会了。这里有一些有趣的嵌套LINQ满栈溢出的例子。我相信您在发展过程中会遇到这些问题。:-)