2-11  CheckedListBox 可选列表框控件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

u 本节学习目标:

n 了解CheckedListBox控件的属性及方法

n 掌握CheckedListBox控件被选择后的移除和添加方法

n 学习CheckedListBox控件在移除和添加时候的注意事项

n 学习CheckedListBox控件在移除和添加时候的多种解决方案

    <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2-11-1  简介

可选列表框控件 CheckedListBox 类似于 ListBox Checkbox 控件的综合体,允许用户在 ListBox 内有选择的挑选具体内容。

    2-11-2  CheckedListBox控件的属性及方法

CheckedListBox 控件主要的属性和事件如表 2-11 所示:

属性

说明

Items

描述控件对象中的所有项。

MutiColumn

决定是否可以以多列的形式显示各项。在控件对象的指定高度内无法完全显示所有项时可以分为多列,这种情况下若MutiColumn属性值为false,则会在控件对象内出现滚动条。

ColumnWidth

当控件对象支持多列时,指定各列所占的宽度

CheckOnClick

决定是否在第一次单击某复选框时即改变其状态

SelectionMode

指示复选框列表控件的可选择性。该属性只有两个可用的值NoneOne,其中None值表示复选框列表中的所有选项都处于不可选状态;One值则表示复选框列表中的所有选项均可选。

Sorted

表示控件对象中的各项是否按字母的顺序排序显示

CheckedItems

表示控件对象中选中项的集合,该属性是只读的

CheckedIndices

表示控件对象中选中索引的集合

事件与方法

说明

SetItemChecked

设置列表中的某个复选框的选中状态。

SetSelected

设置列表中的某个复选框的待选状态。

2-11 CheckedListBox控件的属性及方法

    2-11-3  CheckedListBox控件实践操作

1.<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />案例学习:CheckedListBox 控件的设计开发

1 )从工具箱之中拖放三个 CheckedListBox 控件和四个 Button 控件,如图 2-37 所示进行排列。当点击左右移动的符号按钮时候,左右两侧的数据信息将按照客户意图进行移动,而移动信息将显示在下面的 CheckedListBox 控件中。

2-37  CheckedListBox控件运行效果图
2 )具体功能的实现见下面的编码部分:

         /// <summary>

        /// 初始化事件在左侧的checkedListBox加载星期信息

        /// </summary>

        private void Form4_Load(object sender, EventArgs e)

        {

            checkedListBox1.Items.Add("星期一");

            checkedListBox1.Items.Add("星期二");

            checkedListBox1.Items.Add("星期三");

            checkedListBox1.Items.Add("星期四");

            checkedListBox1.Items.Add("星期五");

            checkedListBox1.Items.Add("星期六");

            checkedListBox1.Items.Add("星期日");

        }

        /// <summary>

        /// 移至右侧部分项

        /// </summary>

        private void button1_Click(object sender, EventArgs e)

        {

            foreach (object o in checkedListBox1.CheckedItems)

            {

                checkedListBox2.Items.Add(o);

            }

            for (int i = 0; i < checkedListBox1.Items.Count; i++)

            {

                if (checkedListBox1.CheckedItems.Contains(checkedListBox1.Items[i]))

                {

                 checkedListBox3.Items.Add(checkedListBox1.Items[i].ToString() + "被移至右侧");

                 checkedListBox1.Items.Remove(checkedListBox1.Items[i]);

                }

            }

        }

        /// <summary>

        /// 左侧全部移到右侧

        /// </summary>

        private void button2_Click(object sender, EventArgs e)

        {

            foreach (object o in checkedListBox1.Items)

            {

                checkedListBox2.Items.Add(o);

            }

            checkedListBox1.Items.Clear();

            checkedListBox3.Items.Add("左侧全部移到右侧");

        }

        /// <summary>

        /// 右侧移到左侧

        /// </summary>

        private void button3_Click(object sender, EventArgs e)

        {

            foreach (object o in checkedListBox2.CheckedItems)

            {

                checkedListBox1.Items.Add(o);

            }

            for (int i = 0; i < checkedListBox2.Items.Count; i++)

            {

                if (checkedListBox2.CheckedItems.Contains(checkedListBox2.Items[i]))

                {

                 checkedListBox3.Items.Add(checkedListBox1.Items[i].ToString() + "被移至左侧");

                 checkedListBox2.Items.Remove(checkedListBox2.Items[i]);

                }

            }

        }

        /// <summary>

        /// 右侧全部移至左侧

        /// </summary>

        private void button4_Click(object sender, EventArgs e)

        {

            foreach (object o in checkedListBox2.Items)

            {

                checkedListBox1.Items.Add(o);

            }

            checkedListBox2.Items.Clear();

            checkedListBox3.Items.Add("右侧全部移到左侧");

        }