3.3 选择类型控件
3.3.1 ListBox控件
1.ListBox控件概述
ListBox控件用于显示一组列表项,用户可以从中选择一项或多项。如果列表项的总数超出可以显示的项数,则ListBox控件会自动添加滚动条。如图3.21所示为ListBox控件。
图3.21 ListBox控件
1)ListBox控件的常用属性
ListBox控件的常用属性及说明如表3.14所示。
表3.14 ListBox控件的常用属性及说明
下面主要介绍ListBox控件的Items、SelectionMode和DataSource属性。
(1)Items属性
Items属性主要是用来获取列表控件的集合,使用Items属性为ListBox控件添加列表项的方法有两种,下面分别进行介绍。
通过属性面板为ListBox控件添加列表项
首先,打开属性面板,单击Items属性后面的按钮,会弹出一个如图3.22所示的“ListItem集合编辑器”对话框。
图3.22 “ListItem集合编辑器”对话框
在“ListItem集合编辑器”对话框中,可以通过单击“添加”按钮,为ListBox控件添加列表项,可以选中该列表项,在属性面板中修改其属性值。当为ListBox控件添加完列表项后,还可以选中列表项,单击↑和↓按钮更改列表项的位置,单击“移除”按钮可以从列表项中将该项删除,如图3.23所示。
图3.23 添加列表项
最后,单击“确定”按钮,返回到页面中,在ListBox控件中将会呈现已添加的列表项。
使用Items.Add方法为ListBox控件添加列表项
在后台代码中,可以编写如下代码,使用Items.Add方法为ListBox控件添加列表项。
lbxSource.Items.Add("星期日"); lbxSource.Items.Add("星期一"); lbxSource.Items.Add("星期二"); lbxSource.Items.Add("星期三"); lbxSource.Items.Add("星期四"); lbxSource.Items.Add("星期五"); lbxSource.Items.Add("星期六");
(2)SelectionMode属性
SelectionMode属性是ListBox列表控件的选择模式,该属性的设置选项有以下两种。
单选(Single):用户只能在列表框中选中一项。
多选(MultiLine):用户可以在列表框中选中多项。
(3)DataSource属性
使用DataSource属性可以从数组或集合中获取列表项并将其添加到控件中。当编程人员希望从数组或集合中填充控件时,可以使用此属性。例如,在后台代码中编写如下代码,将数组绑定到ListBox控件中。
ArrayList arrList = new ArrayList(); arrList.Add("星期日"); arrList.Add("星期一"); arrList.Add("星期二"); arrList.Add("星期三"); arrList.Add("星期四"); arrList.Add("星期五"); arrList.Add("星期六"); ListBox1.DataSource = arrList; ListBox1.DataBind();
注意
在使用ArrayList类数组之前,需要引用ArrayList类的命名空间,其引用代码为“using System. Collections”。
2)ListBox控件常用的方法
ListBox控件的常用方法是DataBind。当ListBox控件使用DataSource属性附加数据源时,可使用DataBind方法将数据源绑定到ListBox控件上。
2.ListBox控件选项的多选和单选操作
【例3.9】 ListBox控件选项的多选和单选操作。(示例位置:TM\sl\03\09)
本示例实现的主要功能是对ListBox控件中的列表项进行多选和单选操作。执行程序,示例运行结果如图3.24所示,在源列表框中选择部分选项,单击“<”按钮后,将会把源列表框中选择的项移到目的列表框中,运行结果如图3.25所示。
图3.24 ListBox控件(选择前)
图3.25 ListBox控件(选择后)
程序实现的主要步骤如下。
(1)新建一个网站,默认主页为Default.aspx。
(2)在Default.aspx页面上添加2个ListBox控件和4个Button按钮,其属性设置及用途如表3.15所示。
表3.15 Default.aspx页面中控件的属性设置及用途
如果需要将源列表框中的选项全部移到目的列表框中,可以单击“<<”按钮。“<<”按钮的Click事件代码如下:
protected void Button1_Click(object sender, EventArgs e) { //获取列表框的选项数 int count = lbxSource.Items.Count; int index = 0; //循环从源列表框中转移到目的列表框中 for (int i = 0; i < count; i++) { ListItem Item = lbxSource.Items[index]; lbxSource.Items.Remove(Item); lbxDest.Items.Add(Item); } //获取下一个选项的索引值 index++; }
如果需要将源列表框中的部分选项移到目的列表框中,可以单击“<”按钮。“<”按钮的Click事件代码如下:
protected void Button3_Click(object sender, EventArgs e) { //获取列表框的选项数 int count = lbxSource.Items.Count; int index = 0; //循环判断各个项的选中状态 for (int i = 0; i < count; i++) { ListItem Item = lbxSource.Items[index]; //如果选项为选中状态,则从源列表框中删除并添加到目的列表框中 if (lbxSource.Items[index].Selected == true) { lbxSource.Items.Remove(Item); lbxDest.Items.Add(Item); //将当前选项索引值减1 index--; } //获取下一个选项的索引值 index++; } }
注意
(1)在列表框中,通过按Shift键或Ctrl键,可以进行多项选择。
(2)单击页面中的“<”按钮和“>”按钮,可以将选中的项目移动到指定的列表框中;单击页面中的“<<”按钮与“>>”按钮,所有项目都将移到指定的列表框中。
3.ListBox控件选项的上移和下移操作
【例3.10】 ListBox控件选项的上移和下移操作。(示例位置:TM\sl\03\10)
本示例实现的主要功能是对ListBox控件中的列表选项进行上移和下移操作。执行程序,示例运行结果如图3.26所示,在列表框中选中最后一项,单击“上移”按钮后,选中的选项将会向上移动,运行结果如图3.27所示。
图3.26 ListBox控件(上移前)
图3.27 ListBox控件(上移后)
程序实现的主要步骤如下。
(1)新建一个网站,默认主页为Default.aspx。
(2)在Default.aspx页面上添加1个ListBox控件和4个Button按钮,其属性设置及用途如表3.16所示。
表3.16 Default.aspx页面中控件的属性设置及用途
如果需要将列表框中选中的项上移,可以单击“上移”按钮。“上移”按钮的Click事件代码如下:
protected void Button1_Click(object sender, EventArgs e) { //若不是第1行则上移 if (lbxSource.SelectedIndex > 0 && lbxSource.SelectedIndex <= lbxSource.Items.Count -1) { //记录当前选项的值 string name = lbxSource.SelectedItem.Text; string value = lbxSource.SelectedItem.Value; //获取当前选项的索引号 int index = lbxSource.SelectedIndex; //交换当前选项和其前一项的索引号 lbxSource.SelectedItem.Text = lbxSource.Items[index -1].Text; lbxSource.SelectedItem.Value = lbxSource.Items[index -1].Value; lbxSource.Items[index -1].Text = name; lbxSource.Items[index -1].Value = value; //设定上一项为当前选项 lbxSource.SelectedIndex--; } }
如果需要将列表框中选中的选项向下移动,可以单击“下移”按钮。“下移”按钮的Click事件代码如下:
protected void Button2_Click(object sender, EventArgs e) { //若不是最后一行则下移 if (lbxSource.SelectedIndex >= 0 && lbxSource.SelectedIndex < lbxSource.Items.Count -1) { //保存当前选项的信息 string name = lbxSource.SelectedItem.Text; string value = lbxSource.SelectedItem.Value; //获取当前选项的索引号 int index = lbxSource.SelectedIndex; //交换当前选项与下一项的信息 lbxSource.SelectedItem.Text = lbxSource.Items[index + 1].Text; lbxSource.SelectedItem.Value = lbxSource.Items[index + 1].Value; lbxSource.Items[index + 1].Text = name; lbxSource.Items[index + 1].Value = value; //设定下一项为当前选项 lbxSource.SelectedIndex++; } }
3.3.2 DropDownList控件
1.DropDownList控件概述
DropDownList控件与ListBox控件的使用类似,但DropDownList控件只允许用户每次从列表中选择一项,而且只在框中显示选定选项。如图3.28所示为DropDownList控件。
图3.28 DropDownList控件
(1)DropDownList控件的常用属性
DropDownList控件的常用属性及说明如表3.17所示。
表3.17 DropDownList控件的常用属性及说明
说明
DropDownList控件的属性大部分与ListBox控件相同,这里不再赘述,读者可参见ListBox控件的属性。
(2)DropDownList控件常用方法
DropDownList控件常用的方法是DataBind。当DropDownList控件使用DataSource属性附加数据源时,可使用DataBind方法将数据源绑定到DropDownList控件上。
(3)DropDownList控件常用事件
DropDownList控件常用的事件是SelectedIndexChanged。当DropDownList控件中选定选项发生改变时,将会触发SelectedIndexChanged事件。
2.将数组绑定到DropDownList控件中
【例3.11】 将数组绑定到DropDownList控件中。(示例位置:TM\sl\03\11)
本示例实现的主要功能是使用DropDownList控件的DataBind方法,将ArrayList数组绑定到DropDownList控件中。执行程序,示例运行结果如图3.29所示。
程序实现的主要步骤如下。
(1)新建一个网站,默认主页为Default.aspx,在Default.aspx页面上添加1个DropDownList控件。
(2)将页面切换到后台代码区,在使用ArrayList类之前,需要引用ArrayList类的命名空间,其代码如下:
using System.Collections;
(3)在页面的Page_Load事件中,编写如下代码,将ArrayList数组绑定到DropDownList控件中。
protected void Page_Load(object sender, EventArgs e) { if (! IsPostBack) { ArrayList arrList = new ArrayList(); arrList.Add("星期日"); arrList.Add("星期一"); arrList.Add("星期二"); arrList.Add("星期三"); arrList.Add("星期四"); arrList.Add("星期五"); arrList.Add("星期六"); DropDownList1.DataSource = arrList; DropDownList1.DataBind(); } }
3.动态改变DropDownList控件的背景色
【例3.12】 动态改变DropDownList控件的背景色。(示例位置:TM\sl\03\12)
本示例实现的主要功能是,当DropDownList控件列表项改变时,其背景色也做相应的改变。执行程序,示例运行结果如图3.30所示。
图3.29 将数组绑定到DropDownList控件中
图3.30 动态改变DropDownList控件的背景色
程序实现的主要步骤如下。
(1)新建一个网站,默认主页为Default.aspx,在Default.aspx页面上添加1个DropDownList控件,其属性设置如表3.18所示。
表3.18 DropDownList控件的属性设置
(2)为了实现当选择的列表项发生改变时,DropDownList控件的背景色也做相应的改变,需要在DropDownList控件的SelectedIndexChanged事件下添加如下代码,在switch语句中改变DropDownList控件的背景色。
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { string color = this.DropDownList1.SelectedItem.Value; switch (color) { case "Red": this.DropDownList1.BackColor = System.Drawing.Color.Red; break; case "Green": this.DropDownList1.BackColor = System.Drawing.Color.Green; break; case "Blue": this.DropDownList1.BackColor = System.Drawing.Color.Blue; break; case " LightGray ": this.DropDownList1.BackColor = System.Drawing.Color. LightGray; break; default : this.DropDownList1.BackColor = System.Drawing.Color.White; break; } }
技巧
(1)获取DropDownList控件选项的索引号和标题
int Index = DropDownList1.SelectedIndex; //获取选项的索引号 string text = DropDownList1.SelectedItem; //获取选项的标题
(2)向DropDownList控件的下拉列表框中添加列表项
DropDownList1.Items.Add(new ListItem("ASP.NET", "0")); DropDownList1.Items.Add(new ListItem("VB.NET", "1")); DropDownList1.Items.Add(new ListItem("C#.NET", "2")); DropDownList1.Items.Add(new ListItem("VB", "3"));
(3)删除选择的DropDownList控件的列表项
ListItem Item = DropDownList1.SelectedItem; DropDownList1.Items.Remove(Item);
(4)清除所有DropDownList控件的列表项
DropDownList1.Items.Clear();
(5)获取DropDownList控件包含的列表项数
int count = DropDownList1.Items.Count;
3.3.3 RadioButton控件
1.RadioButton控件概述
RadioButton控件是一种单选按钮控件,用户可以在页面中添加一组RadioButton控件,通过为所有的单选按钮分配相同的GroupName(组名),来强制执行从给出的所有选项集中仅选择一个选项。如图3.31所示为RadioButton控件。
图3.31 RadioButton控件
(1)RadioButton控件的常用属性
RadioButton控件的常用属性及说明如表3.19所示。
表3.19 RadioButton控件的常用属性及说明
下面介绍RadioButton控件的一些重要属性。
GroupName属性
使用GroupName属性指定一组单选按钮,以创建一组互相排斥的控件。如果用户在页面中添加了一组RadioButton控件,可以将所有单选按钮的GroupName属性值设为同一个值,来强制执行在给出的所有选项集中仅有一个处于被选中状态。
Checked属性
如果RadioButton控件被选中,则RadioButton控件的Checked属性值为true;否则,为false。
TextAlign属性
可以通过Text属性指定要在RadioButton控件中显示的文本。当RadioButton控件的TextAlign属性值为Left时,文本显示在单选按钮的左侧;当RadioButton控件的TextAlign属性值为Right时,文本显示在单选按钮的右侧。
(2)RadioButton控件常用的事件
RadioButton控件常用的事件是CheckedChanged,当RadioButton控件的选中状态发生改变时引发该事件。
2.使用RadioButton控件模拟考试系统中的单选题
【例3.13】 使用RadioButton控件模拟考试系统中的单选题。(示例位置:TM\sl\03\13)
本示例通过设置RadioButton控件的GroupName属性值,模拟考试系统中的单选题,并在RadioButton控件的CheckedChanged事件下,将用户选择的答案显示出来。执行程序并选择答案D,示例运行结果如图3.32所示,单击“提交”按钮,将会弹出如图3.33所示的提示对话框。
图3.32 使用RadioButton控件模拟考试系统
图3.33 提示对话框
程序实现的主要步骤如下。
(1)新建一个网站,默认主页为Default.aspx,在Default.aspx页面上添加4个RadioButton控件、1个Label控件和1个Button按钮控件,其属性设置及用途如表3.20所示。
表3.20 Default.aspx页面中控件属性设置及用途
(2)为了使用户将已选择的答案显示在界面上,可以在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事件代码将不再给出,请读者参见本书光盘。
(3)当用户已选择完答案,可以通过单击“提交”按钮获取正确答案。“提交”按钮的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(’正确答案为D,恭喜您,答对了!')</script>"); } else { Response.Write("<script>alert(’正确答案为D,对不起,答错了!')</script>"); } }
3.3.4 CheckBox控件
1.CheckBox控件概述
CheckBox控件是用来显示允许用户设置true或false条件的复选框。用户可以从一组CheckBox控件中选择一项或多项。如图3.34所示为CheckBox控件。
图3.34 CheckBox控件
(1)CheckBox控件的常用属性
CheckBox控件的常用属性及说明如表3.21所示。
表3.21 CheckBox控件的常用属性及说明
下面介绍CheckBox控件的一些重要属性。
Checked属性
如果CheckBox控件被选中,则CheckBox控件的Checked属性值为true,否则为false。
TextAlign属性
可以通过Text属性指定要在CheckBox控件中显示的文本。当CheckBox控件的TextAlign属性值为Left时,文本显示在单选按钮的左侧;当CheckBox控件的TextAlign属性值为Right时,文本显示在单选按钮的右侧。
(2)CheckBox控件的常用事件
CheckBox控件的常用事件是CheckedChanged,当CheckBox控件的选中状态发生改变时引发该事件。
2.使用CheckBox控件模拟考试系统中的多选题
【例3.14】 使用CheckBox控件模拟考试系统中的多选题。(示例位置:TM\sl\03\14)
本示例主要是模拟考试系统中的多选题功能,并在CheckBox控件的CheckedChanged事件下,将用户选择的答案显示出来。执行程序并选择答案A、B、C,示例运行结果如图3.35所示。单击“提交”按钮,将会弹出如图3.36所示的提示对话框。
图3.35 使用CheckBox控件模拟考试系统
图3.36 提示对话框
程序实现的主要步骤如下。
(1)新建一个网站,默认主页为Default.aspx,在Default.aspx页面上添加4个CheckBox控件、4个Label控件和1个Button控件,其属性设置及用途如表3.22所示。
表3.22 Default.aspx页面中控件的属性设置及用途
注意
CheckBox控件的AutoPostBack属性值设置为true,则当选中复选框时系统会自动将网页中的内容送回Web服务器,并触发CheckBox控件的CheckedChanged事件。
(2)为了将已选择的答案显示在界面上,可以在CheckBox控件的CheckedChanged事件中,使用Checked属性来判断该CheckBox控件是否已被选中,如果已被选中,则将其显示出来。复选框CheckBox1的CheckedChanged事件代码如下:
protected void CheckBox1_CheckedChanged(object sender, EventArgs e) { if (CheckBox1.Checked == true) { this.Label1.Text = "A"; } else { this.Label1.Text = ""; } }
注意
复选框CheckBox2、CheckBox3和CheckBox4的CheckedChanged事件代码与CheckBox1控件的CheckedChanged事件代码相似,都是用来判断该复选框是否被选中。如果被选择,则将其显示出来。由于篇幅有限,其他复选框的CheckedChanged事件代码将不再给出,请读者参见本书光盘。
(3)当用户选择完答案后,可以通过单击“提交”按钮获取正确答案。“提交”按钮的Click事件代码如下:
protected void Button1_Click(object sender, EventArgs e) { //判断用户是否已选择了答案,如果没有作出选择,弹出对话框,提示用户选择答案 if (CheckBox1.Checked == false && CheckBox2.Checked == false && CheckBox3.Checked == false && CheckBox4.Checked == false) { Response.Write("<script>alert(’请选择答案’)</script>"); } else if (CheckBox1.Checked == true && CheckBox2.Checked == true && CheckBox3.Checked == true && CheckBox4.Checked == false) { Response.Write("<script>alert(’正确答案为ABC,恭喜您,答对了!')</script>"); } else { Response.Write("<script>alert(’正确答案为ABC,对不起,答错了!')</script>"); } }