问大家一个问题,假如现在有四个checkboxlist控件,checkboxlist1,checkboxlist2,checkboxlist3,checkboxlist4,当我选中checkboxlist1中的某一项时,则其它的三个checkboxlist控件里的所有项也都被选中,请问怎么去实现呢?(说明:checkboxlist2是checkboxlist1下一级,checkboxlist3是checkboxlist2下一级,checkboxlist4是checkboxlist3下一级,就相当于Treeviwe节点与了节点的关系!)

解决方案 »

  1.   

    我目前没用过,不过应该用分组可以解决.将四个控件分到同一组,像java那样.
      

  2.   


            //用一个List保存所有的CheckListBox
            private List<CheckedListBox> clbList;
            clbList = new List<CheckedListBox>();
            //将相关的CheckedListBox添加到List中
            clbList.AddRange(new CheckedListBox[] { checkedListBox1, checkedListBox2, checkedListBox3, checkedListBox4 }); 
            //注册每个CheckedListBox的ItemCheck事件
            foreach (CheckedListBox clb in clbList)
            {
                    clb.ItemCheck += this.OnItemCheck;
            }        
            private void OnItemCheck(object sender, ItemCheckEventArgs e)
            {
                CheckedListBox clb = sender as CheckedListBox;
                //找到当前的CheckListBox在List中的位置
                int index = clbList.IndexOf(clb);
                
                //从最后一个CheckedListBox开始设置check状态
                for (int i = clbList.Count - 1; i > index; i--)
                {
                    clb = clbList[i]; 
                    //先注销事件是为了防止OnItemCheck被重复调用
                    clb.ItemCheck -= this.OnItemCheck; 
                    //设置状态
                    for (int j = 0; j < clb.Items.Count; j++)
                    {
                        clb.SetItemChecked(j, true);
                    }
                    //重新注册ItemCheck时间
                    clb.ItemCheck += this.OnItemCheck;
                }
            }
      

  3.   

    LZ,问一下,你单击checkboxlist控件某一项时,选中此项的属性是什么?
    有没有Checked?
      

  4.   

    我刚看了一下这个控件,有点想法,如下:
    用checkedListBox1.SelectedItem.ToString()得到checkedListBox1所选的值.
    用循环处理其他控件的选中情况:
    int maxcount=checkedListBox2.Items.Count;
                 for (int i = 0; i < maxcount; i++)
                 {
                     checkedListBox2.SetItemChecked(i, true);//选中所有项
                 }
      

  5.   

    楼上的这位朋友,那你怎么在去获取当前的CheckBoxList 当前选择项的索引值呢?
      

  6.   

    请问您,checkboxlist这个控件能不能这样处理呢?当我第一次选时,它前面的钩不去掉!当我第二次选时,它的前面的钩就去掉!
      

  7.   

    怎么private List<CheckedListBox> clbList;在我的电脑上打不出来呢?clbList打点不出现它对相关的属性和方法呢?我引用了using System.Collections.Generic;命令集,可是还是不行啊!