Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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# 如何在winforms(许多GroupBox)中访问所有按钮_C#_Winforms - Fatal编程技术网

C# 如何在winforms(许多GroupBox)中访问所有按钮

C# 如何在winforms(许多GroupBox)中访问所有按钮,c#,winforms,C#,Winforms,我在三个GroupBox(groupbox1等)中有6个按钮。一切都在表格1中 我试着让所有。。但什么都没有发生 foreach(var cmd in this.Controls.OfType<Button>()) { cmd.Enabled = true; } foreach(此.Controls.OfType()中的var cmd) { cmd.Enabled=true; } 这是正确的解决方案吗 foreach(var gb in this.Controls.Of

我在三个GroupBox(groupbox1等)中有6个按钮。一切都在表格1中 我试着让所有。。但什么都没有发生

foreach(var cmd in  this.Controls.OfType<Button>())
{
    cmd.Enabled = true;
}
foreach(此.Controls.OfType()中的var cmd)
{
cmd.Enabled=true;
}
这是正确的解决方案吗

foreach(var gb in this.Controls.OfType<GroupBox>())
{
    foreach (var cmd in gb.Controls.OfType<Button>())
    {
       cmd.Enabled = true;
    }
}
foreach(this.Controls.OfType()中的var gb)
{
foreach(gb.Controls.OfType()中的var cmd)
{
cmd.Enabled=true;
}
}

为了获得所需的
按钮
实例,您必须访问每个
分组框中的
控件
属性

您提出的解决方案确实有效,但您可以使用LINQ的
SelectMany
链接此解决方案:

foreach (var button in Controls.OfType<GroupBox>()
      .SelectMany(groupBox => groupBox.Controls.OfType<Button>()))
{
    button.Enabled = true;
}
foreach(Controls.OfType()中的var按钮)
.SelectMany(groupBox=>groupBox.Controls.OfType())
{
button.Enabled=true;
}

如果按钮位于其他控件中,则需要递归控件集合,直到找到它们为止。我添加了解决方案,可以吗?看起来不错,尝试时会发生什么?有效;)但贝娄·阿德里安给出了它也能工作的最终代码。哪一个更好?解决方案基本相同。选择你更了解的那个。它有效;)什么是更好的解决方案?我的还是你的?