如何在列表中获取所有 Windows 窗体元素

本文关键字:Windows 窗体 元素 获取 列表 | 更新日期: 2023-09-27 18:30:16

我有一个Windows表单应用程序。

窗口窗体由几个元素组成。我可以通过他们的名字联系他们每个人。(例如:文本框 1。正文)

我可以获取集合中的所有表单元素吗?

如何在列表中获取所有 Windows 窗体元素

可以使用下面的方法遍历树,并获取任何控件下的所有子控件(在所有深度)。

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);

这只会获得顶级项目。如果你需要更深入(提示初始),你需要做一些递归。

试试这个。代码隐藏文件中的控件,应提供所有控件的列表。