首页 > 解决方案 > 我如何在winforms(许多组框)中foreach所有按钮

问题描述

我在三个组框(groupbox1 等)中有 6 个按钮。一切都在form1中,我尝试启用所有..但什么也没发生

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

这是正确的解决方案吗?

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

标签: c#winforms

解决方案


您必须访问Controls每个内部的属性GroupBox才能获得所需的Button实例。

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

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

推荐阅读