<分区>
我正在使用 Windows 窗体。如何递归查询具有特定类型的表单的所有子控件?
在 SQL 中,您可以使用自连接来执行此操作。
var result =
from this
join this ????
where ctrl is TextBox || ctrl is Checkbox
select ctrl;
我也可以在 LINQ 中执行此操作吗?
编辑:
LINQ 支持联接。为什么我不能使用某种自连接?
<分区>
我正在使用 Windows 窗体。如何递归查询具有特定类型的表单的所有子控件?
在 SQL 中,您可以使用自连接来执行此操作。
var result =
from this
join this ????
where ctrl is TextBox || ctrl is Checkbox
select ctrl;
我也可以在 LINQ 中执行此操作吗?
编辑:
LINQ 支持联接。为什么我不能使用某种自连接?
最佳答案
像这样的东西应该可以工作(无论如何都不是完美的代码......只是为了传达这个想法):
public IEnumerable<Control> GetSelfAndChildrenRecursive(Control parent)
{
List<Control> controls = new List<Control>();
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);
关于c# - 如何递归查询 Winform 的所有子控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2525062/
相关文章:
c# - 通过 Linq 使用 Json.Net 查找节点以插入或删除子节点
c# - 使用 MVC 5 和 Asp.net Identity 的电子邮件确认
c# - 用于从 ASP.NET C#(服务器端)中的 HTML 元素中删除 onclick =""属性的正则表达式
c# - 为什么我们要将 ClassInterface 属性应用于类?
c# - 如何遍历 Linq 中 .select 语句中的所有元素
.net - LINQ to Entities 无法识别方法
c# - 如何使用 Visual Studio 2008 部署 asp.net 应用程序