不是简单的一个foreach就行的,因为form里面还有Panel,Panel里面还有Panel,有好几层.
求个公用方法,不管它多少层,都能遍历到.

解决方案 »

  1.   

    递归呀,所以一个foreach就搞定了;
      

  2.   

    http://topic.csdn.net/u/20100920/14/0dfb893b-16fe-4a1e-b6e6-c8aa8688fe57.html
      

  3.   

    foreach(control c in this.controls)
    {
       if( c.HasChildren )
         //递归
        else
         //读取控件
    }
      

  4.   

    这样整,不过你可能不会喜欢的,有些控件是组合控件        
            private List<Control> ctrlList=new List<Control>();        private void simpleButton2_Click(object sender, EventArgs e)
            {
                getControls(this);
                MessageBox.Show(ctrlList.Count.ToString());
            }        private void getControls(Control pCtrl)
            {
                foreach (Control ctrl in pCtrl.Controls)
                {
                    getControls(ctrl);
                    ctrlList.Add(ctrl);
                }
            }
      

  5.   

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

  6.   

    private void Form1_Load(object sender, EventArgs e)
            {
                GetControl(this);
            }        /// <summary>
            /// 递归遍历所有控件
            /// </summary>
            /// <param name="ctrls"></param>
            private void GetControl(Control ctrls)
            {
                foreach (Control c in ctrls.Controls)
                {
                    if (c.Controls.Count > 0)
                    {
                        GetControl(c);
                    }
                    else
                    {
                        foreach (Control btnCtrl in ctrls.Controls)
                        {
                            if (btnCtrl is Button)
                            {
                                Button bt = btnCtrl as Button;
                                mc.ListButton.Add(bt);
                            }
                        }
                        break;
                    }
                }
            }
    今天做项目刚好用到就贴出来给你看看了...
      

  7.   

    写的一个类似的函数,楼主借鉴下http://blog.csdn.net/wangxianshou/archive/2010/08/24/5835145.aspx
      

  8.   

    private void FindControl(Control.ControlCollection controls)
    {
      foreach (Control control in controls)   
      {   
          if (control.HasChildren)   
          {  
             FindControl(control);
          }
          else 
          {
             ListBoxControl.Add(control.ToString());
          } 
       }  
    }