如何获取一个GroupBox 里所有的 复选框checkBox?

时间:2022-05-03 09:20:46

                foreach (Control c in this.groupBox1.Controls)
                {
                    if (c is CheckBox)
                    {
                        CheckBox cb = (CheckBox)c;
                        cb.Checked = true;
                    }
                }

这样写不对吗? 
求指教 , 谢谢各位

14 个解决方案

#1


引用楼主 excaliburx 的回复:
C# code

                foreach (Control c in this.groupBox1.Controls)
                {
                    if (c is CheckBox)
                    {
                        CheckBox cb = (CheckBox)……

#2


你试验一下不就知道了嘛!

#3


还有个问题 我想获得 这个Form的 CheckBox 这么写 也有问题。...

                foreach (Control c in this.Controls)
                {
                    if (c is CheckBox)
                    {
                        CheckBox cb = (CheckBox)c;
                        cb.Checked = true;
                    }
                }

#4


。。不行
我代码写的是这个。。

因为 不正确,所以我才来问问的。

谢谢各位。

#5


foreach (Control c in this.Controls)
                {
                    if (c is CheckBox)
                    {
                        CheckBox cb = c as CheckBox;
                        if(cb!=null)
                           cb.Checked = true;
                    }
                }

有什么问题?

#6


看起来没错。
一般调试下就知道结果了

#7


                        CheckBox cb = (CheckBox)c;
                        cb.Checked = true;
这两句多余,直接
((CheckBox)c).Checked = true;

#8


引用 3 楼 excaliburx 的回复:
还有个问题 我想获得 这个Form的 CheckBox 这么写 也有问题。...
C# code

                foreach (Control c in this.Controls)
                {
                    if (c is CheckBox)
                    {
               ……

如果checkbox放在别的控件里,如groupbox,你这样只循环一次是找不到的

#9


  主要的问题 就是。

 我的 GroupBox  大概有6 个CheckBox.
this.groupBox1.Controls 的Count 也是6个 
可是全是 Textbox类型的 ...
真搞不懂 
我的GroupBox   里只有 6个 复选框。...

#10


最准确的获取某一容器下的所有checkbox需要用滴归
     

#11


 private List<CheckBox> checkboxList = new List<CheckBox>();
        private void GetCheckBoxs(Control.ControlCollection ctrls)
        {
            foreach (Control ctl in ctrls)
            {
                if (ctl is CheckBox)
                    checkboxList.Add(ctl as CheckBox);
                else
                    GetCheckBoxs(ctl.Controls);
            }
        }


        private void button4_Click(object sender, EventArgs e)
        {

            GetCheckBoxs(this.Controls);

            foreach (CheckBox cb in checkboxList)
            {
                cb.Checked = true;
            }
}

#12


谢谢。

#13


引用 9 楼 excaliburx 的回复:
  主要的问题 就是。

 我的 GroupBox  大概有6 个CheckBox.
this.groupBox1.Controls 的Count 也是6个 
可是全是 Textbox类型的 ...
真搞不懂 
我的GroupBox   里只有 6个 复选框。...

Are you kidding??

#14


楼主写的就对 我试了~

#1


引用楼主 excaliburx 的回复:
C# code

                foreach (Control c in this.groupBox1.Controls)
                {
                    if (c is CheckBox)
                    {
                        CheckBox cb = (CheckBox)……

#2


你试验一下不就知道了嘛!

#3


还有个问题 我想获得 这个Form的 CheckBox 这么写 也有问题。...

                foreach (Control c in this.Controls)
                {
                    if (c is CheckBox)
                    {
                        CheckBox cb = (CheckBox)c;
                        cb.Checked = true;
                    }
                }

#4


。。不行
我代码写的是这个。。

因为 不正确,所以我才来问问的。

谢谢各位。

#5


foreach (Control c in this.Controls)
                {
                    if (c is CheckBox)
                    {
                        CheckBox cb = c as CheckBox;
                        if(cb!=null)
                           cb.Checked = true;
                    }
                }

有什么问题?

#6


看起来没错。
一般调试下就知道结果了

#7


                        CheckBox cb = (CheckBox)c;
                        cb.Checked = true;
这两句多余,直接
((CheckBox)c).Checked = true;

#8


引用 3 楼 excaliburx 的回复:
还有个问题 我想获得 这个Form的 CheckBox 这么写 也有问题。...
C# code

                foreach (Control c in this.Controls)
                {
                    if (c is CheckBox)
                    {
               ……

如果checkbox放在别的控件里,如groupbox,你这样只循环一次是找不到的

#9


  主要的问题 就是。

 我的 GroupBox  大概有6 个CheckBox.
this.groupBox1.Controls 的Count 也是6个 
可是全是 Textbox类型的 ...
真搞不懂 
我的GroupBox   里只有 6个 复选框。...

#10


最准确的获取某一容器下的所有checkbox需要用滴归
     

#11


 private List<CheckBox> checkboxList = new List<CheckBox>();
        private void GetCheckBoxs(Control.ControlCollection ctrls)
        {
            foreach (Control ctl in ctrls)
            {
                if (ctl is CheckBox)
                    checkboxList.Add(ctl as CheckBox);
                else
                    GetCheckBoxs(ctl.Controls);
            }
        }


        private void button4_Click(object sender, EventArgs e)
        {

            GetCheckBoxs(this.Controls);

            foreach (CheckBox cb in checkboxList)
            {
                cb.Checked = true;
            }
}

#12


谢谢。

#13


引用 9 楼 excaliburx 的回复:
  主要的问题 就是。

 我的 GroupBox  大概有6 个CheckBox.
this.groupBox1.Controls 的Count 也是6个 
可是全是 Textbox类型的 ...
真搞不懂 
我的GroupBox   里只有 6个 复选框。...

Are you kidding??

#14


楼主写的就对 我试了~