一、简介
CheckBox复选框控件和CheckedListBox复选列表框。
当需要用户在多个选项中选择多个项时,可以使用复选框或复选列表框。
复选按钮处于被选中状态时,其左边方块会出现勾号。
复选框所组成的选项组可以进行多选,而单选则不能。
复选列表框是一个选项组控件,能完成列表框可以完成的任务。
在列表中的项旁边显示复选标记。
可以理解成CheckBox和ListBox的组合体。
二、CheckBox和CheckedListBox的常用属性
1.CheckState(状态)
RadioButton拥有两种状态,用Checked属性来表示勾选和未勾选。
CheckBox除了拥有Checked属性外,还可以通过CheckState属性表示3种状态。
1)Checked
处于勾选状态。
2)Unchecked
处于未勾选状态。
3)Indeterminate
处于不确定状态。
注意:
当把CheckState属性设置为Indeterminate时,Checked属性会自动变为true。
当Checked属性值改变时,会导致CheckState属性自动变为Checked或Unchecked。
2.CheckOnClick(单击时切换状态)
是CheckedListBox复选列表框所独有的,其值为布尔值。
指示复选列表框中是否应在首次单击某项时改变其状态。
当值为false时,需要单击项2次才能改变其状态。
3.SelectedIndex(选中项的索引号)
是CheckedListBox复选框列表的属性,它只能通过代码方式访问。
CheckedListBox控件可以包含多个项,每个项都有自己的索引号,从0开始计算。
该属性是一个可读、可写的属性,当读取它时,返回当前选中的项。
当给它赋值时,将使得指定项处于选中状态。
4.SelectedItem(选中的项)
是CheckedListBox控件的属性,它只能通过代码方式访问。
它是一个只读属性,返回当前被选中的项。
5.CheckedIndices(勾选项的索引集合)
是CheckedListBox控件的属性,它只能通过代码方式访问。
它是一个只读属性,返回所有勾选项的索引集合。
可通过foreach语句访问所有被勾选的项。
foreach (int i in checkedListBox.CheckedIndices)
6.CheckedItems(勾选项的集合)
是CheckedListBox控件的属性,它只能通过代码方式访问。
它是一个只读属性,返回所有勾选项集合。
可通过foreach语句访问所有被勾选的项。
foreach (object o in checkedListBox.CheckedItems)
三、CheckBox和CheckedListBox的常用事件
1.CheckedChanged事件
Checked属性值更改。
是CheckBox控件的事件,当CheckBox的Checked属性值发生改变时,将会触发这个事件,并调用事件的过程。
它与RadioButton的CheckedChanged事件基本相同,只是由于勾选一个CheckBox时不好导致其他CheckBox状态改变,所以单击一个没有被勾选的CheckBox时,不会导致该事件被触发2次。
2.CheckStateChanged事件
CheckState属性值更改。
是CheckBox控件的事件,与CheckedChanged事件基本一样,在Checked属性值被更改时两者都会被触发。
唯一不同的是,当CheckBox处于勾选状态时,使用代码方式将CheckState的属性值设置成Indeterminate,不会触发CheckedChanged事件而会触发CheckStateChanged事件。
3.ItemCheck事件
Checked属性值更改。
该属性是CheckedListBox控件事件,当CheckedListBox中某个项的Checked属性发生改变时,将会触发该事件。
这里需要注意,先触发事件才会改变Checked属性。
4.SelectedIndexChanged事件
Checked属性值更改
该属性是CheckedListBox控件事件,当CheckedListBox中某个项的Checked属性发生改变时,将会触发该事件。
跟ItemCheck事件不同,它将在Checked属性改变后才触发该事件。
而且事件一般用于鼠标勾选项时的情况。
如果使用代码更改Checked属性,将不会触发该事件。
四、CheckedListBox复选列表框的常用方法。
是一个带有集合性质的控件,它可以包含多个项。
为了方便管理,所有的项都被存放于Items属性内。
可以通过Items属性里的一些方法和属性来管理CheckedListBox里的每一项。
1.CheckedListBox.Items.Add方法
有时需要根据实际情况动态地在CheckedListBox中添加项。
Items.Add方法可以实现这样的功能。
比如添加一个名称为“北京”的项。
checkedListBox.Items.Add("北京");
2.CheckedListBox.SetItemChecked方法
如果需要用代码指定某项是否处于勾选状态,可以使用次方法。
方法原型是:
public void SetItemChecked(int index, bool value)
第一个参数:是一个整数,指定项的索引号。
第二个参数:是一个bool值,判断是否被选中。
如果被选中,为true。未被选中,为false。
如果将索引号2的项设置成未勾选选中的状态:
checkedListBox.SetItemChecked(2, false);
3.CheckedListBox.SetItemCheckState方法
复选列表框中的每个项是一个CheckBox,所以也具有CheckState属性。
可以通过SetItemCheckState方法来设置项的CheckState属性。
SetItemCheckState方法的原型是:
checkedListBox.SetItemCheckState(0, CheckState.Indeterminate);
五、实例演示
1.CheckBox和CheckedListBox的使用。
1)首先创建一个windows应用程序
2)修改窗体属性,Name:FormFavor;Text:请选则您关注的编程语言。
3)在窗体上放置1个Label控件,修改属性。
Name:lblSelCount;
Text:您已选择了0项;
AutoSize:false;(自动大小,false时,手动调节大小)
TextAligh:MiddleLeft;(左对齐)
4)放置1个CheckedListBox复选列表框控件。
Name:chkIsFavor;
CheckOnClick:true;(单击时切换状态)
Items属性:找到并单击右侧的小按钮,往里添加内容。
5)放置1个Button按钮控件。
Name:btnPost;
Text:提交;
6)放置1个TextBox输入框控件。
Name:txtResult;
Multiline:true;(手动调整大小)
7)放置3个CheckBox复选框控件。
Name分别为:chkBlod、chkItalic、chkUnderline;
Text分别为:粗体、斜体、下划线;
8)给chkFavor复选列表框控件生成SelectedIndexChanged事件。
9)给btnPost按钮控件,生成Click事件。
10)同时选择3个CheckBox复选框控件,共同生成CheckedChanged事件。
11)代码如下
运行结果
分析:
并没有涉及太多上述的概念。当然概念确实很乏味,但也得知道啊!
20~25行
通过CheckOnClick属性来获取被选中的状态。
然后chkIsFavor.CheckedIndices.Count则表示选中被勾选的个数。
这里之所以没有选择ItemCheck事件,是因为该事件发生后Checked属性才改变,所以会导致统计数目出错。
lblSelCount.Text重新修改lblSelCount控件的属性值。
27~35行
点击按钮控件,执行Click事件代码里的应用。
也就是把复选列表框中选中的项,显示在txtResult输入框内。
chkIsFavor.CheckedItems获取复选列表框中被选中的集合。
然后通过foreach进行遍历输出。
最后的s.TrimEnd('、') ,是将最后的“、”顿号删除。
需要注意的是,这里使用的是单引号,不是双引号。
37~47行
FontStyle是一个位标志,使用“或”运算符进行或运算。
使用“&~”运算符减去FontStyle,是加入一种特效?
先进行~(求补)运算,然后再进行&(与)运算。
涉及位运算、运算符优先级、三目运算符。
总之就是改变字体样式,如果选中就是或运算,附加字体样式;如果没有选中就是与运算,求补,也就是不加样式。