如何遍历winform窗体中的所有控件,包括容器中的

解决方案 »

  1.   

    foreach (Control ctl in this.Controls) 
      

  2.   

    foreach(Control ctrl in this.Controls)
    {
       ...
    }
      

  3.   


    假如窗体中有几个groupbox 这样取到的是容器
    容器内部的怎么去做
      

  4.   

    可以查到的,用容器ID
    foreach(Control c in groupBox1.Controls)
    {
        MessageBox.show(c.Name);//输出控件名
    }
      

  5.   

    要用递归啊,楼上都是来混分的//伪代码如下 void EnumControls(Control container)
    {
       foreach(var c in container.Controls)
       {
           //c is the child control here
           EnumControls(c);        
       }
    }//调用
    EnumControls(this);
      

  6.   

    楼主,这是我写的一个类似的小函数,指定控件的
    楼主可以自己改造下就可以了可以弄一个一维数组,找到一个就放入,最后返回这个
    数组即可。http://blog.csdn.net/wangxianshou/archive/2010/08/24/5835145.aspx
      

  7.   

    一个简单的递归//伪代码
    void PrintCtrlName(Control parent)
    {
      foreach(Contrl ctrl in parent.Controls)
      {
        Print(ctrl.Name);
        if(ctrl.Controls.Count >0)
        {
           PrintCtrlName(ctrl);
        }
      }
    }
      

  8.   

    void Foo(Control.ControlCollection ctls)
    {
      foreach (Control ctl in ctls)  
      {  
        if (ctl is TextBox)  
        {  
        }
        else if (ctl.Controls != null) Foo(ctl.Controls); 
      }  
    }
      

  9.   

            private void GetControl(Control.ControlCollection ctc)
            {
                foreach (Control ct in ctc)
                {
                    //C# 只遍历窗体的子控件,不遍历孙控件
                    //当窗体上的控件有子控件时,需要用递归的方法遍历,才能全部列出窗体上的控件
                    if (ct.HasChildren)
                    {
                        GetControl(ct.Controls);
                    }
                }
            }