我的两个GroupBox中都有 ComboBox控件,我做成DropDownList的形式.但是我想对他们做统计的处理,也就是说,两个GroupBox中的控件的处理方式都一样.this.Controls获得的只有GroupBox. 难道只能每个GroupBox地查找?我想避开这个.

解决方案 »

  1.   


    foreach (Control ctl in this.Controls)
    {
       if ((ctl as GroupBox) != null)
       {
           foreach (Control c in ctl.Controls)
           {
               ComboBox cbb = c as ComboBox;
               if (cbb != null)
               {
                  //
               }
           }
       }
    }
      

  2.   

    直接找,.NET已经帮你写好方法了,this.Controls.Find("ComboBox1",true)[0]
      

  3.   

    我不单单是在form上找控件,这个和我的需求不怎么合理.本来的想法是说要类型是ComboBox的控件,但是不直接在 窗体中,用另外的GroupBox.
    但是貌似是要通过一层一层的查找才行...
      

  4.   

    大致思路:
    public List<Control> FindControls()
    {
        List<Control> result = new List<Control>();
        foreach (Control c in Controls) 
        {
            foreach (Control item in FindInSubControl(c)) result.Add(item);
        }
        return result;
    }private List<Control> FindInSubControl(Control parent)
    {
        List<Control> result = new List<Control>();
        foreach (Control c in parent.Controls) 
        {
            foreach (Control item in FindInSubControl(c)) result.Add(item);
            result.Add(parent);
        }
        return result;
    }
      

  5.   


    如何清空GroupBox中所有的控件呢?这些控件是动态生成的,我觉得只需要一句话就好,但是我不会用,求大家帮忙。
      

  6.   

    GroupBox gb;
    //略gb.Controls.Clear();
      

  7.   

    互相学习,推荐你下个离线的msdn library,它是个知识库