我有一个 Windows 窗体应用程序。
Windows 窗体由多个元素组成。我可以通过他们的名字联系到他们。 (例如:textbox1.Text)
我可以获取集合中的所有表单元素吗?
最佳答案
您可以使用下面的方法遍历树并获取任何控件下方的所有子控件(所有深度)。
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>();
关于c# - 如何获取列表中的所有 Windows 窗体元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18643649/