如何递归查询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); 

可能这会帮助你……

如何从包含任何容器中的控件的表单中获取所有控件?

一旦你有了列表,你就可以查询