如何在列表中获取所有 Windows 窗体元素
本文关键字:Windows 窗体 元素 获取 列表 | 更新日期: 2023-09-27 18:30:16
我有一个Windows表单应用程序。
窗口窗体由几个元素组成。我可以通过他们的名字联系他们每个人。(例如:文本框 1。正文)
我可以获取集合中的所有表单元素吗?
可以使用下面的方法遍历树,并获取任何控件下的所有子控件(在所有深度)。
public static IEnumerable<Control> GetAllControls(Control root)
{
var stack = new Stack<Control>();
stack.Push(root);
while (stack.Any())
{
var next = stack.Pop();
foreach (Control child in next.Controls)
stack.Push(child);
yield return next;
}
}
然后,可以将窗体作为根传入,以单个序列获取该窗体中的所有控件。 如果您希望将它们全部放在List
中,请使用ToList
。
如果只想筛选出特定类型的控件,请使用 OfType
:
var textboxes = GetAllControls(someForm).OfTYpe<Textbox>();
使用
this.Controls
(或更正式地使用 Control.Controls
)
若要获取所有TextBox
控件,请使用以下命令:
this.Controls.OfType<Control>().Where(x => x is TextBox);
这只会获得顶级项目。如果你需要更深入(提示初始),你需要做一些递归。
试试这个。代码隐藏文件中的控件,应提供所有控件的列表。