以C#形式循环所有面板

时间:2018-07-16 03:17:41

标签: c#

这是我想要做的事情的逻辑。首先,我将循环panels中的所有form并检查visible是否等于true,如果是,则它将值更改为false。基本上所有可见的面板都将被隐藏。

问题是当我运行程序时所有控件下面的代码都消失了。

我的方法:

foreach (var c in Controls)
{
    if (c.GetType() == typeof(Panel));
        c.Visible = false;
}

2 个答案:

答案 0 :(得分:3)

如果要使可见->不可见,反之亦然,请使用此-

foreach (Control c in Controls)
{
    if (c.GetType() == typeof(Panel))
    {
        // Invert the visibility state of the panel
        c.Visible = !c.Visible;
    }
}

答案 1 :(得分:2)

您也可以使用OfType<T>仅遍历面板:

foreach (Panel p in Controls.OfType<Panel>())
    p.Visible = !p.Visible;

如果您使用的是MoreLinq,则可以使用更短的版本:

Controls.OfType<Panel>().ForEach(p => p.Visible = !p.Visible);