我想检索表单的控件。要做到这一点:
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;
}
}
它工作正常,检索父控件的所有子项。但是我需要这个方法也返回父控件。我试过这个,但它不起作用(因为该方法是递归的):
internal static IEnumerable<Control> EnumereAllControls(Control parentControl)
{
yield return parentControl; // does not work
foreach (Control subControl in parentControl.Controls)
{
yield return subControl;
foreach (Control c in EnumereAllControls(subControl))
yield return c;
}
}
感谢您的帮助!
答案 0 :(得分:3)
你只有一行太多,试试这个:
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;
}
}
答案 1 :(得分:2)
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;
}
}
嗯,同样的事情减去你得到的额外收益。
答案 2 :(得分:0)
如果不是约束,您可以将父控件添加到方法外部的结果中。