如何在隐藏所有面板上设置例外?

时间:2018-10-28 19:23:55

标签: c#

我刚刚看到了另一个问题的答案,该问题隐藏了表单中的所有面板。所以我想知道如何使此代码例外。这段代码在C#中。

        foreach (Control c in this.Controls)
        {
            if (c is Panel) c.Visible = false;
        }

我试图添加另一个以检查c是否是我的面板,但这不起作用。

  

如果(c是MyPanel)继续;

MyPanl是我的面板的名称。

错误列表说A constant value is expected

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

根据您的评论,您可以尝试使用c == MyPanel代替c is MyPanel作为条件,因为... is ...检查了类型而不是比较实例。

foreach (Control c in this.Controls)
{
    if (c == MyPanel) continue;
    else if  (c is Panel) c.Visible = false;
}

我将使用linq where设置条件以使代码更清晰

var panels = this.Controls
    .Cast<Control>()
    .Where(c => c != MyPanel && c is Panel);

foreach (var c in panels)
{
    c.Visible = false;
}