如何在c#中获取表单的所有控件列表?

时间:2012-12-18 12:33:55

标签: c# winforms

  

可能重复:
  how to get all controls of win form?

我有一个如下图所示的winform enter image description here
我想要一个MainForm所有控件的列表 像这样:
MainForm的
Button1的
PANEL1
TextBox1的
是Panel2
BUTTON2
TextBox2

1 个答案:

答案 0 :(得分:7)

这样的事情应该有效(不是任何方式的完美代码......只是为了让这个想法得以实现):

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)