在一个FORM中有两个TEXTBOX和一个GROUPBOX,GROUPBOX中有若个个TEXTBOX,问题是:如何遍历FORM中的所有TEXTBOX(包括GROUPBOX中的)!!我用以下代码的话只能遍历到GROUPBOX中的TEXTBOX,外面的就不行foreach(Control c in this.Controls){
if(c is TEXTBOX){
c.test="";
}
}
如果是以下代码则相反,里面的能够遍历但外面的就不行foreach(Control c in groupbox.Controls){
if(c is TEXTBOX){
c.test="";
}
}请问该如何写代码啊!!

解决方案 »

  1.   

            private void  GetAllControl(Control p_Control,IList<Control> p_Controls)
            {
                foreach(Control _Control in p_Control.Controls)
                {
                    p_Controls.Add(_Control);
                    if (_Control.Controls.Count != 0)
                    {
                        GetAllControl(_Control, p_Controls);
                    }
                }
            }没测试不知道对不对
      

  2.   


    foreach(Control c in this.Controls){
    if(c is TEXTBOX){
    c.test="";
    }
    }//这个foreach只能找到所有page底下的子控件。如果你想找到所有的控件可以考虑下面的代码    private List<Control> list = new List<Control>();
        public void method()
        {
            foreach (Control temp in this.Controls)
            {
                list.Add(temp);
                myFindControl(temp);
            }
        }    public void myFindControl(Control myControl)
        {
            if (myControl.Controls.Count > 0)
            {
                foreach (Control temp in myControl.Controls)
                {
                    list.Add(temp);
                    myFindControl(temp);
                }
            }
        }
      

  3.   

    public void Method(Control ctl){
    foreach(Control c in this.Controls){
    if(c is ContainerControl){
    Method(c);
    }
    if(c is TEXTBOX){
    c.test="";
    }
    }
    }
      

  4.   

    用递归:
    private void FindControl(Control control)
    {
        foreach(Control c in control.Controls)
        {
            if(c is TEXTBOX){
                c.test="************";
            }
            else
            {
                FindControl(c);
            }
        }
    }
    调用:
    FindControl(this);