一个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;
上面的代码得到的顺序不对,怎么改进一下???
可以这么做的,注意的地方
1.记得判断是checkbox的时候应该是用is判断
2.这个顺序一定要弄好,你这个foreach判断的话,不能保证字符串顺序。。。
可以给checkbox设置tabindex
我想到一个办法,可能比较保险一点。
我们注意一下这个方法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做为你的控件的标识,进行一一对应。