Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以正确的顺序循环通过groupBox控件_C#_Groupbox - Fatal编程技术网

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

C# 以正确的顺序循环通过groupBox控件,c#,groupbox,C#,Groupbox,我有一段代码,它循环遍历我的groupBox控件并获取控件的名称。然后将名称写入文本框。但是,它们循环的顺序需要与名称一致,即gb1、gb2、gb3。。。它们现在循环的顺序似乎就是它们被创建的顺序(时间方面)。我已经整理了设计器代码,以便按照我希望的方式创建控件,但这似乎没有什么区别。有什么建议吗?谢谢 private void loopThroughControls() { foreach (Control ctrl in this.Controls)

我有一段代码,它循环遍历我的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);
            }
          }
    }

为什么不在遍历列表之前对其进行排序

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满栈溢出的例子。我相信您在发展过程中会遇到这些问题。:-)