C#Winform如何迭代面板父级中的所有面板子级

C#Winform如何迭代面板父级中的所有面板子级,c#,winforms,C#,Winforms,我有一个名为“pl_parent”的父面板,其中有3个面板子面板,名字(从左到右)pl_child1、pl_child2、pl_child3 当按下按钮1(pl_child1、pl_child2、pl_child3)时,我试图用以下代码迭代pl_parent中的所有面板子级: private void btn_Click(object sender, EventArgs e) { foreach (Panel pan in pl_parent) {

我有一个名为“pl_parent”的父面板,其中有3个面板子面板,名字(从左到右)pl_child1、pl_child2、pl_child3

当按下按钮1(pl_child1、pl_child2、pl_child3)时,我试图用以下代码迭代pl_parent中的所有面板子级:

    private void btn_Click(object sender, EventArgs e)
    {
        foreach (Panel pan in pl_parent)
        {

        }
    }
但它没有按预期工作,我得到一个错误“error CS1579 foreach语句无法对'Panel'类型的变量进行操作,因为'Panel'不包含'GetEnumerator'的公共实例定义”

谢谢大家!


您需要添加
IEnumerable
。以下代码起作用:

IEnumerable<Panel> pnls = pl_parent.Controls.OfType<Panel>();
foreach (Panel pan in pnls)
{
    pan.BackColor = Color.Black;
}
IEnumerable pnls=pl_parent.Controls.OfType();
foreach(pnls中的面板盘)
{
pan.BackColor=Color.Black;
}

要按制表符顺序进行迭代,可以使用
IEnumerable pnls=pl\u parent.Controls.OfType().OrderBy(ci=>ci.TabIndex)

您需要添加
IEnumerable
。以下代码起作用:

IEnumerable<Panel> pnls = pl_parent.Controls.OfType<Panel>();
foreach (Panel pan in pnls)
{
    pan.BackColor = Color.Black;
}
IEnumerable pnls=pl_parent.Controls.OfType();
foreach(pnls中的面板盘)
{
pan.BackColor=Color.Black;
}

要按制表符顺序进行迭代,可以使用
IEnumerable pnls=pl\u parent.Controls.OfType().OrderBy(ci=>ci.TabIndex)

为每个面板尝试方法Show()

为每个面板尝试方法Show()

是的,这很有效。但您能解释一下“IEnumerable pnls=pl_parent.Controls.OfType()是什么吗?”;“是吗?我不太明白。谢谢!我不是最能解释这一点的人,因此如果我错了,请纠正我。基本上,它会创建一个
IEnumerable
的实例,并选择pl\U parent中
Panel
的所有控件类型。是的,这是有效的。但是你能解释一下'IEnumerable pnls=pl\U parent.controls.OfTy'是什么吗?”“你呢?我不太明白。谢谢我不能很好地解释这一点,因此,如果我错了,请纠正我。基本上,它创建了一个
IEnumerable
的实例,并在pl\U父级中选择
面板
的所有控件类型。