C# 如何在“隐藏所有面板”上创建异常?

C# 如何在“隐藏所有面板”上创建异常?,c#,C#,我刚刚看到了另一个问题的答案,因为它隐藏了表格中的所有面板。所以我想知道如何对这段代码破例。这段代码是用C#编写的 我试图添加另一个if来检查c是否是我的面板,但这不起作用 如果(c是MyPanel)继续 MyPanl是我的面板的名称 错误列表显示需要一个常量值 有人能帮忙吗 从您的评论中,您可以尝试使用c==MyPanel作为条件,而不是c是MyPanel,因为。。。是否选中了…类型而不是比较实例 foreach (Control c in this.Controls) { if (c

我刚刚看到了另一个问题的答案,因为它隐藏了表格中的所有面板。所以我想知道如何对这段代码破例。这段代码是用C#编写的

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

如果(c是MyPanel)继续

MyPanl是我的面板的名称

错误列表显示需要一个常量值


有人能帮忙吗

从您的评论中,您可以尝试使用
c==MyPanel
作为条件,而不是
c是MyPanel
,因为
。。。是否选中了…
类型而不是比较实例

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;
}
var panels=this.Controls
.Cast()
其中(c=>c!=MyPanel&&c是Panel);
foreach(面板中的var c)
{
c、 可见=假;
}

什么是
MyPanel
类继承自
Panel
?什么是“不工作”的意思?错误?例外情况?未预料到的行为?你调试过这个问题了吗?@D-Shih MyPanel是从类
Panel
@HimBromBeere我编辑的问题构建的
对象
。你能告诉我
MyPanel
是在哪里和如何声明的吗?不清楚这是变量或成员的名称还是类名。是的,谢谢。这对我帮助很大。@Danilovanovic没问题,很乐意帮忙:)
var panels = this.Controls
    .Cast<Control>()
    .Where(c => c != MyPanel && c is Panel);

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