如何检索父控件及其子控件-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;
}
}