首页 新闻 搜索 专区 学院

如何按顺序遍历控件?

0
悬赏园豆:5 [已解决问题] 解决于 2010-11-16 13:04

一个GroupBox中有20个checkbox,名字为checkbox1、checkbox2、。。。。。、checkbox20。

现在要遍历它们,并判断是否选中,如果选中就是1,未选中是0,最后得到一个字符串sCheck。

例如:

在这20个控件中,选中的是第2和第15个,则sCheck为“01000000000000100000”

 string sresult=null;       

 foreach (Control c in this.groupBox.Controls)
            {
                if (c.GetType().Name == "CheckBox")
                {
                    CheckBox s = (CheckBox)c;
                    if (s.Checked)
                    {
                        sresult = "1"+sresult;
                    }
                    else
                    {
                        sresult = "0"+sresult;
                    }
                }
            }
            sCheck= sresult;

上面的代码得到的顺序不对,怎么改进一下???

问题补充: int[] iresult = new int[20]; string sresult = ""; foreach (Control c in this.groupBox.Controls) { if (c.GetType().Name == "CheckBox") { CheckBox s = (CheckBox)c; if (s.Checked) { int id = Int32.Parse(s.Name.Substring(8))-1; iresult[id]=1; } else { int id = Int32.Parse(s.Name.Substring(8))-1; iresult[id] = 0; } } } for (int i = 0; i < 20;i++ ) { sresult += iresult[i].ToString(); } sCheck = sresult; 解决了,我用数组来存每个对应的checkbox是否选中的值,最后用个循环将它们连接起来!呵呵,感谢大家的支持!
nightfire的主页 nightfire | 初学一级 | 园豆:94
提问于:2010-11-16 10:44
< >
分享
最佳答案
0

可以这么做的,注意的地方

1.记得判断是checkbox的时候应该是用is判断

2.这个顺序一定要弄好,你这个foreach判断的话,不能保证字符串顺序。。。

收获园豆:3
顾晓北 | 专家六级 |园豆:10283 | 2010-11-16 11:11
其他回答(2)
0

可以给checkbox设置tabindex

收获园豆:1
artwl | 园豆:16536 (专家六级) | 2010-11-16 11:06
0

我想到一个办法,可能比较保险一点。

我们注意一下这个方法InitializeComponent(),要注意到:

(1)    注意控件的加载顺序:依次添加四个控件checkBox1,checkBox2,checkBox3,checkBox4,加载到集合中的顺序是:

            this.groupBox1.Controls.Add(this.checkBox4);
            this.groupBox1.Controls.Add(this.checkBox3);
            this.groupBox1.Controls.Add(this.checkBox2);
            this.groupBox1.Controls.Add(this.checkBox1);

(2) 给每个控件的Tag赋个标识, 
            this.checkBox1.Name = "checkBox1";
            this.checkBox1.Text = "checkBox1";
            this.checkBox1.Tag = 1;

            这样,你就可以用这个Tag做为你的控件的标识,进行一一对应。

收获园豆:1
角逐魏蜀吴 | 园豆:533 (小虾三级) | 2010-11-16 11:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册