### RadioButton 控件

#### 1． RadioButton 控件的概述

RadioButton 控件是一种单选按钮控件，用户可以在页面中添加一组 RadioButton 控件，通过为所有的单选按钮分配相同的 GroupName（组名），来强制执行从给出的所有选项集中仅选择一个选项。图 1 为 RadioButton 控件。

图 1 RadioButton 控件

（1）RadioButton 控件常用属性

RadioButton 控件常用属性及说明如表 1 所示。

表 1 RadioButton 控件常用的属性

属性名称 | 属性值
AutoPostBack | 获取或设置一个值，该值指示在单击 RadioButton 控件时，是否自动回发到服务器
CausesValidation | 获取或设置一个值，该值指示在单击 RadioButton 控件时，是否执行验证
Checked | 获取或设置一个值，该值指示是否已选中 RadioButton 控件
GroupName | 获取或设置单选按钮所属的组名
Text | 获取或设置与 RadioButton 关联的文本标签
TextAlign | 获取或设置与 RadioButton 控件关联的文本标签的对齐方式
Enabled | 控件是否启用
ID | 获取或设置分配给服务器控件的编程标识符

下面介绍一下 RadioButton 控件的一些重要属性。

q GroupName 属性

使用 GroupName 属性指定一组单选按钮，以创建一组互相排斥的控件。如果用户在页面中添加了一组 RadioButton 控件，可以将所有单选按钮的 GroupName 属性值设为同一个值，来强制执行在给出的所有选项集中仅有一个处于被选中状态。

q Checked 属性

如果 RadioButton 控件被选中，则 RadioButton 控件的 Checked 属性值为 True，否则为 False。

q TextAlign 属性

RadionButton 控件可以通过 Text 属性指定要在控件中显示的文本。当 RadioButton 控件的 TextAlign 属性值为 Left 时，文本显示在单选按钮的左侧；当 RadioButton 控件的 TextAlign 属性值为 Right 时，文本显示在单选按钮的右侧。

（2）RadioButton 控件常用的事件

RadioButton 控件常用的事件是 CheckedChanged，当 RadioButton 控件的选中状态发生改变时引发该事件。

#### 2． 使用 RadioButton 控件模拟考试系统中的单选题

下面示例通过设置 RadioButton 控件的 GroupName 属性值，模拟考试系统中的单选题，并在 RadioButton 控件的 CheckedChanged 事件下，将用户选择的答案显示出来。执行程序并选择答案“D”，示例运行结果如图 2 所示，单击【提交】按钮，将会弹出如图 3 提示对话框。

图 2 使用 RadioButton 控件模拟考试系统

图 3 对话框

程序实现的主要步骤：

新建一个网站，默认主页为 Default.aspx，在 Default.aspx 页面上添加 4 个 RadioButton 控件、一个 Label 控件和一个 Button 按钮控件。其属性设置及其用途如表 2 所示。

表 2 Default.aspx 页面中控件属性设置及其用途

控件类型 | 控件名称 | 主要属性设置 | 用途
标准/Label 控件 | Label1 | Text 属性设置为“？” | 显示用户已选择的答案
标准/Button 控件 | Button1 | Text 属性设置为“提交” | 执行提交功能
标准/RadioButton 控件 | RadioButton1 | Text 属性设置为“Ａ：地球是圆的” | 显示“Ａ：地球是圆的”文本
AutoPostBack 属性设置为 True | 当单击控件时，自动回发到服务器中
GroupName 属性设置为 Key | RadioButton 控件的组名，强制执行单选操作
TextAlign 属性设置为 Right | 文本显示在单选按钮的右侧
RadioButton2 | Text 属性设置为“Ｂ：地球是长的” | 显示“Ｂ：地球是长的”文本
AutoPostBack 属性设置为 True | 当单击控件时，自动回发到服务器中
GroupName 属性设置为 Key | RadioButton 控件的组名，强制执行单选操作
TextAlign 属性设置为 Right | 文本显示在单选按钮的右侧
RadioButton3 | Text 属性设置为“Ｃ：地球是方的” | 显示“Ｃ：地球是方的”文本
AutoPostBack 属性设置为 True | 当单击控件时，自动回发到服务器中
GroupName 属性设置为 Key | RadioButton 控件的组名，强制执行单选操作
TextAlign 属性设置为 Right | 文本显示在单选按钮的右侧
RadioButton4 | Text 属性设置为“Ｄ：地球是椭圆的” | 显示“Ｄ：地球是椭圆的”文本
AutoPostBack 属性设置为 True | 当单击控件时，自动回发到服务器中
GroupName 属性设置为 Key | RadioButton 控件的组名，强制执行单选操作
TextAlign 属性设置为 Right | 文本显示在单选按钮的右侧

为了使用户将已选择的答案显示在界面上，可以在 RadioButton 控件的 CheckedChanged 事件中，使用 Checked 属性来判断该 RadioButton 控件是否已被选择，如果已被选择，则将其显示出来。单选按钮 RadioButton1 的 CheckedChanged 事件代码如下：

protected void RadioButton1_CheckedChanged(object sender, EventArgs e)

{

if (RadioButton1.Checked == true)

{

this.Label1.Text = "A";

}

}

注意：单选按钮 RadioButton2、RadioButton3 和 RadioButton4 控件的 CheckedChanged 事件代码与 RadioButton1 控件的 CheckedChanged 事件代码相似，都是用来判断该单选按钮是否被选中，如果被选择，则将其显示出来。由于篇幅有限，其他单选按钮的 CheckedChanged 事件代码将不再给出，请读者参见本书光盘。

当用户已选择完答案，可以通过单击【提交】按钮，获取正确答案。【提交】按钮的 Click 事件代码如下：

protected void Button1_Click(object sender, EventArgs e)

{

//判断用户是否已选择了答案。如果没有作出选择，将会弹出对话框，提示用户选择答案

if (RadioButton1.Checked == false && RadioButton2.Checked == false && RadioButton3.Checked == false && RadioButton4.Checked == false)

{

Response.Write("<script>alert('请选择答案')</script>");

}

else if (RadioButton4.Checked == true)

{

Response.Write("<script>alert('正确答案为Ｄ，恭喜您，答对了！')</script>");

}

else

{

Response.Write("<script>alert('正确答案为Ｄ，对不起，答错了！')</script>");

}

}