如何递归查询Winform的所有Childcontrols?
我使用Windows窗体。 如何以递归方式查询具有特定类型的Form的所有子控件?
在SQL中,您将使用selfjoin来执行此操作。
var result = from this join this ???? where ctrl is TextBox || ctrl is Checkbox select ctrl;
我也可以在LINQ中这样做吗?
编辑:
LINQ支持连接。 为什么我不能使用某种自我加入?
像这样的东西应该工作(不是任何方式的完美代码……只是为了让想法得到解决):
public IEnumerable GetSelfAndChildrenRecursive(Control parent) { List controls = new List (); foreach(Control child in parent.Controls) { controls.AddRange(GetSelfAndChildrenRecursive(child)); } controls.Add(parent); return controls; } var result = GetSelfAndChildrenRecursive(topLevelControl) .Where(c => c is TextBox || c is Checkbox);
可能这会帮助你……
如何从包含任何容器中的控件的表单中获取所有控件?
一旦你有了列表,你就可以查询