如何检索父控件及其子控件-Winforms C#2

如何检索父控件及其子控件-Winforms C#2,winforms,c#-2.0,Winforms,C# 2.0,我想检索表单的控件。为此: internal static IEnumerable<Control> EnumereTousControle(Control controleParent) { foreach (Control subControl in controleParent.Controls) { yield return subControl; foreach (Control c in EnumereTousContro

我想检索表单的控件。为此:

internal static IEnumerable<Control> EnumereTousControle(Control controleParent)
{
    foreach (Control subControl in controleParent.Controls)
    {
        yield return subControl;

        foreach (Control c in EnumereTousControle(subControl))
            yield return c;
    }
}
内部静态IEnumerable EnumerTouseControle(Control controleParent)
{
foreach(controleParent.Controls中的控制子控制)
{
收益回报子控制;
foreach(枚举控制(子控制)中的控制c)
收益率c;
}
}
它工作正常,检索父控件的所有子控件。但是我需要这个方法也返回父控件。我尝试了这个方法,但不起作用(因为该方法是递归的):

内部静态IEnumerable EnumerallControls(控件父控件)
{
yield return parentControl;//不起作用
foreach(parentControl.Controls中的控制子控件)
{
收益回报子控制;
foreach(EnumerAllControls(Subcrol)中的控件c)
收益率c;
}
}

谢谢你的帮助

如果你只是多了一行,试试这个:

internal static IEnumerable<Control> EnumereAllControls(Control parentControl)
{
    yield return parentControl;

    foreach (Control subControl in parentControl.Controls)
    {
        foreach (Control c in EnumereAllControls(subControl))
            yield return c;
    }
}
内部静态IEnumerable EnumerallControls(控件父控件)
{
收益率控制;
foreach(parentControl.Controls中的控制子控件)
{
foreach(EnumerAllControls(Subcrol)中的控件c)
收益率c;
}
}

如果您只多了一行,请尝试以下方法:

internal static IEnumerable<Control> EnumereAllControls(Control parentControl)
{
    yield return parentControl;

    foreach (Control subControl in parentControl.Controls)
    {
        foreach (Control c in EnumereAllControls(subControl))
            yield return c;
    }
}
内部静态IEnumerable EnumerallControls(控件父控件)
{
收益率控制;
foreach(parentControl.Controls中的控制子控件)
{
foreach(EnumerAllControls(Subcrol)中的控件c)
收益率c;
}
}
内部静态IEnumerable EnumerTouseControle(控件控件租金){
收益率控制租金;
foreach(controleParent.Controls中的控制ctl){
foreach(EnumerTouseControle(ctl)中的控制子级)
退换子女;
}
}
好吧,同样的事情减去你得到的额外收益。

内部静态IEnumerable EnumerTouseControle(Control-controleParent){
收益率控制租金;
foreach(controleParent.Controls中的控制ctl){
foreach(EnumerTouseControle(ctl)中的控制子级)
退换子女;
}
}

好的,同样的事情减去你得到的额外收益。

如果不是约束,你可以从方法外部将父控件添加到结果。

如果不是约束,你可以从方法外部将父控件添加到结果中

    internal static IEnumerable<Control> EnumereTousControle(Control controleParent) {
        yield return controleParent;
        foreach (Control ctl in controleParent.Controls) {
            foreach (Control child in EnumereTousControle(ctl)) 
                yield return child;
        }
    }