日期:2014-05-17  浏览次数:21749 次

C#中groupBox的CheckBox。。。菜鸟问题
C# code

foreach (Control y in groupBox1.Controls)
            {
                CheckBox ca = (CheckBox)y;
                ca.Checked = CCharToBool.CharToBool(charPurview[int.Parse(ca.Tag.ToString())]);
            }



在groupBox1中有N个CheckBox,上面代码中得CheckBox ca = (CheckBox)y; 是神马意思?
还有ca.Tag.ToString()返回的是什么?

另外,如果我在一个groupBox中添加很多歌CheckBox,如20个,怎么知道哪个是第几个?
 
刚接触Winform的东东,很多不懂。。。。

------解决方案--------------------
你前台添加的那么多个CheckBox的话,每个都有一个唯一标识的ID,就通过这个来区分是哪个。

就像咱中国有这么多人,怎么区分?每个人都有一个身份证的嘛

C# code

foreach (Control c in groupBox1.Controls)
{
      //只遍历CheckBox控件 
      if (c is CheckBox)
      {
           if(c.Checked)
           {
               MessageBox.Show("被选中的CheckBox有:"+c.ID);
           }
      }
}

------解决方案--------------------
CheckBox ca = (CheckBox)y;
这个将Control转换成CheckBox,因为Control是CheckBox的父类,所以要强制转换
Tag属性可以用来存取数据,ca.Tag.ToString()是获取Tag属性的值,Tag属性的类型是Object
------解决方案--------------------
向下转型
------解决方案--------------------
另外,如果我在一个groupBox中添加很多歌CheckBox,如20个,怎么知道哪个是第几个?

这个问题你可以看控件属性里的 Tabindex
------解决方案--------------------
强制转换
------解决方案--------------------
强制转换
------解决方案--------------------
CheckBox ca = (CheckBox)y; 的意思是: 将y强制转化为CheckBox类型对象,赋值于ca。
ca.Tag.ToString(); 返回的是控件ca的tag值。Tag值可读可写。
groupBox中的每一个CheckBox控件都有TabIndex属性,且默认从0开始,可根据此值确定CheckBox是第几个。
------解决方案--------------------
探讨


foreach (Control y in groupBox1.Controls)
{
CheckBox ca = (CheckBox)y;
ca.Checked = CCharToBool.CharToBool(charPurview[int.Parse(ca.Tag.ToString())]);
}



在groupBox1中有N个CheckBox,上面代码中得CheckBox ca = (CheckBox)y; 是神马意思?
还有ca.Tag.ToString()返回的是什么?

另外,如果我在一个groupBox中添加很多歌CheckBox,如20个,怎么知道哪个是第几个?

------解决方案--------------------
探讨
CheckBox ca = (CheckBox)y; 的意思是: 将y强制转化为CheckBox类型对象,赋值于ca。
ca.Tag.ToString(); 返回的是控件ca的tag值。Tag值可读可写。
groupBox中的每一个CheckBox控件都有TabIndex属性,且默认从0开始,可根据此值确定CheckBox是第几个。