
在窗体编程与设计时,有许多控件都具有选择功能。最常见的有RadioButton控件和CheckBox控件。前者是用于单项选择,后者用于多项选择或复选。
单选控件
RadioButton又称单选按钮,其在工具箱中的图标为
,单选按钮通常成组出现,用于提供两个或多个互斥选项,即在一组单选钮中只能选中一个。

(1)Checked属性:用来设置或返回单选按钮是否被选中,选中时值为true,没有选中时值为false。
(2)AutoCheck属性:如果 AutoCheck 属性被设置为 true(默认),那么当选中该单选按钮时,将自动清除该组中所有其他单选按钮。对一般用户来说,不需要改变该属性,采用默认值(true)即可。
(3)Appearance属性:用来获取或设置单选按钮控件的外观。当其取值为Appearance. Button时,将使单选按钮的外观像命令按钮一样:当选定它时,它看似已被按下。当取值为Appearance.Normal时,就是默认的单选按钮的外观。
(4)Text属性:用来设置或返回单选按钮控件内显示的文本,该属性也可以包含访问键,即在某字母前面加一个“&”符号,例如,在Text属性中设置成“&Female”,则用户就可以通过按Alt+F快捷键来选中控件。

(1)Click事件:当选中单选按钮时,将把单选按钮的Checked属性值设置为true,同时发生Click事件。
(2)CheckedChanged事件:当Checked属性值更改时,将触发CheckedChanged事件。
复选控件
CheckBox控件的常用属性如下。
(1)TextAlign属性:用来设置控件中文字的对齐方式,有9种选择。从上到下、从左至右分别是:ContentAlignment.TopLeft、ContentAlignment.TopCenter、ContentAlignment. TopRight、ContentAlignment.MiddleLeft、ContentAlignment.MiddleCenter、ContentAlignment. MiddleRight、ContentAlignment.BottomLeft、ContentAlignment.BottomCenter和ContentAlignment. BottomRight。
该属性的默认值为ContentAlignment.MiddleLeft,即文字左对齐、居控件垂直方向中央。
(2)ThreeState属性:用来返回或设置复选框是否能表示3种状态,如果属性值为true时,表示可以表示3种状态——选中、未选中和中间态(CheckState.Checked、CheckState. Unchecked和CheckState.Indeterminate),属性值为false时,只能表示两种状态——选中和未选中。
(3)Checked属性:用来设置或返回复选框是否被选中,值为true时,表示复选框被选中;值为false时,表示复选框未被选中。当ThreeState属性值为true时,中间态也表示选中。
(4)CheckState属性:用来设置或返回复选框的状态。在 ThreeState 属性值为 false 时,取值有CheckState.Checked或CheckState.Unchecked。在ThreeState属性值被设置为True时,CheckState还可以取值为CheckState.Indeterminate,在此时,复选框显示为浅灰色选中状态,该状态通常表示该选项下的多个子选项未完全选中。
CheckBox控件的常用事件有Click和CheckedChanged等,其含义及触发时机与单选按钮完全一致。


(建议全屏播放)

本案例将设计一个顾客选购商品的系统。其中顾客身份有两类:一类是VIP,另一类是普通会员。商品种类有4种,分别是手套、骑行音箱、骑行鞋和青蛙灯。其中VIP享受9折优惠和商店赠送的礼品,而普通会员都不享受。单击【确定】按钮后,系统根据顾客不同的选择,在文本框显示顾客最终的选购结果。顾客默认身份为普通会员。

(1)学会使用单选按钮的处理方法。
(2)学会使用复选框的处理方法。
(3)掌握选择结构与单选按钮、复选框的配合使用。
(4)学会使用组合框。

(1)新建项目。
 |
| 图3.3 添加控件后的效果 |
(2)设计程序界面。设计程序界面包括添加单选按钮、复选框、按钮、标签和文本框等控件并设置其属性。
(3)添加控件。本案例需要添加4个单选按钮、4个复选框、一个按钮、一个标签、一个文本框和两个包含单选按钮的组合框。添加控件后的效果如图3.3所示。
(4)设置控件属性。按照表3.1设置相应控件属性。
| 表3.1 对应控件属性 |
|---|
控件对象名 | 属 性 名 | 属 性 值 |
buttonl | Name | buttonl |
Text | 确定 |
radioButtonl | Name | radioButtonl |
Checked | True |
Text | 男 |
radioButton2 | Name | radioButton2 |
Checked | False |
Text | 女 |
radioButton3 | Name | radioButton3 |
Checked | False |
Text | VIP会员 |
radioButton4 | Name | radioButton4 |
Checked | True |
Text | 普通会员 |
checkBoxl | Name | checkBoxl |
Enabled | True |
Checked | False |
Text | 手套 |
checkBox2 | Name | checkBox2 |
Enabled | True |
| Checked | False |
| Text | 骑行音箱 |
| checkBox3 | Name | checkBox3 |
| Enabled | True |
| Checked | False |
| Text | 骑行鞋 |
| checkBox4 | Name | checkBox4 |
| Enabled | False |
| Checked | False |
| Text | 青蛙灯(免费) |
| 1abel1 | Name | Label1 |
| Font | 宋体,21px |
| Text | 欢迎选购骑行装备 |
(5)编写代码。在设计器视图中双击【确定】按钮,VS.NET已经自动添加了【确定】按钮的Click(单击)事件处理方法buttonl_Click(),光标定位在该方法的一对大括号之间,在光标定位处输入如下代码:
在设计器视图中双击【普通会员】单选按钮,VS.NET已经自动添加了【普通会员】单选按钮的CheckedChanged事件处理方法radioButton4_CheckedChanged(),光标定位在该方法的一对大括号之间,在光标定位处输入如下代码:
checkBox4.Checked = false;
checkBox4.Enabled = false;
(6)保存程序。
(7)运行并调试程序。程序运行结果如图3.4所示。

|
| 图3.4 顾客选购商品系统运行结果 |

本案例的源程序位于“代码\2010\第3章\Shopping”文件夹中,具体代码如下:
程序分析:
(1)本案例使用了选择结构中的if-else语句,利用分支结构针对用户选择判断相应想购买的商品和用户信息。
(2)Environment.NewLine相当于控制台程序中的“\r\n”,其名称空间为System,它是一个类,NewLine是其字符串属性,用于获取当前环境中定义的回车换行符字符串。
(3)案例中利用以下语句:
textBox1.Text = sex1+sex2+"您是" + rb1 + rb2 + "您选购的是:" + cb1 + cb2 + cb3 + cb4;
来实现将所选择的物品信息和用户信息进行连接的功能。当满足不同条件时,系统利用它可把相应选项的文本添加到文本框中。


Checked属性是单选按钮、复选框的一个属性,它表示单选按钮、复选框是否被选中。true表示单选按钮、复选框被选中,false表示未被选中。所以程序中可以通过Checked属性来判断单选按钮、复选框是否被选中,从而执行相应的代码。

Enabled属性允许在运行时使窗体和控件成为有效或无效。有效为true,无效为false,在本案例中普通会员是不享受9折优惠,也没有青蛙灯(免费)礼物的,所以普通会员是不可选中【青蛙灯(免费)】复选框的,因此当顾客是普通会员时,Enabled属性为false。

当Checked属性值改变时,触发CheckedChanged事件。当选中【普通会员】单选按钮时,就触发了它的CheckedChanged事件,普通会员是不可选中【青蛙灯(免费)】复选框的,所以设置【青蛙灯(免费)】复选框的Enabled属性为false。同理当选中【VIP会员】单选按钮时,就触发了它的CheckedChanged事件,VIP会员是可以选中【青蛙灯(免费)】复选框的,所以设置【青蛙灯(免费)】复选框的Enabled属性为true,并将Checked属性自动设置为true。