如何从不使用TableLayoutPanel的Form获取控件?

时间:2015-11-14 06:30:59

标签: c# windows winforms tablelayoutpanel

在使用TableLayoutPanel的Windows窗体应用程序中,我们通过函数

获得所有控件
Control control in tableLayoutPanel1.Controls
如果我不在表单中使用TableLayoutPanel,有没有办法获取控件?

2 个答案:

答案 0 :(得分:0)

您可以创建如下的扩展方法:

public static class ControlExtensions
{
    public static IEnumerable<Control> GetAllControls(this Control containerControl)
    {
        var controls = Enumerable.Empty<Control>();
        controls = controls.Concat(containerControl.Controls.Cast<Control>());
        foreach (Control control in containerControl.Controls)
        {
            controls = controls.Concat(control.GetAllControls());
        }
        return controls;
    }
}

并像这样使用它:

foreach (Control c in theForm.GetAllControls())
{
    Debug.WriteLine(c.Name);
}

请注意,方法GetAllControls可以与任何Control一起使用,而不仅仅是Form

答案 1 :(得分:0)

如果没有将控件放入TableLayoutPanel,那么它们很可能属于主窗体。所以ypu可以像这样遍历它们:

foreach(Control control in this.Controls)
{
  //do somthing with the controls
}