ListBox控件用于显示一组列表项,用户可以从中选择一项或多项。如果列表项的总数超出可以显示的项数,则ListBox控件会自动添加滚动条。图1为ListBox控件。
![]()
图1 ListBox控件
(1)ListBox控件常用的属性
ListBox控件常用的属性及说明如表1所示。
表1 ListBox控件常用的属性
|
属性名称 |
属性值 |
|
Items |
获取列表控件项的集合 |
|
SelectionMode |
获取或设置ListBox控件的选择格式 |
|
SelectedIndex |
获取或设置列表控件中选定项的最低序号索引 |
|
SelectedItem |
获取列表控件中索引最小的选中的项 |
|
SelectedValue |
获取列表控件中选定项的值,或选择列表控件中包含指定值的项 |
|
Rows |
获取或设置ListBox控件中显示的行数 |
|
DataSource |
获取或设置对象,数据绑定控件从该对象中检索其数据项列表 |
|
ID |
获取或设置分配给服务器控件的编程标识符 |
下面主要介绍一下ListBox控件的Items属性、DataSource属性和SelectionMode属性。
q Items属性
Items属性主要是用来获取列表控件的集合,使用Items属性为ListBox控件添加列表项的方法有两种,下面分别来介绍一下:
l 通过属性窗口为ListBox控件添加列表项
首先,打开属性窗口,单击Items属性后面的
图标按钮,会弹出一个如图2所示的“ListItem集合编辑器”对话框。

图2 ListItem集合编辑器
其次,在该“ListItem集合编辑器”对话框中,用户可以通过单击【添加】按钮,为ListBox控件添加列表项,用户可以选中该列表项,在属性窗口中修改该列表项的属性值。当为ListBox控件添加完列表项后;还可以选中列表项,单击【↑】和【↓】按钮更改列表项的位置,单击【移除】按钮从列表项中,将该项删除。如图3所示。

图3 添加列表项
最后,单击【确定】按钮,返回到页面中,在ListBox控件中将会呈现已添加的列表项。
l 使用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("星期六");
q SelectionMode属性是ListBox列表控件的选择模式,该属性的设置选项有以下两种。
l 单选(Single):用户只能在列表框中选中一项。
l 多选(MultiLine):用户可以在列表框中选中多项。
q 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控件上。
下面示例实现的主要功能是对ListBox控件中的列表项进行多选和单选操作。执行程序,示例运行结果如图4所示,在源列表框中选择部分项,单击【<】按钮后,将会把源列表框中选择的项移到目的列表框中,运行结果如图5所示。

图4 ListBox控件(选择前)

图5 ListBox控件(选择后)
程序实现的主要步骤:
新建一个网站,默认主页为Default.aspx,在Default.aspx页面上添加两个ListBox控件和4个Button按钮,其属性设置及其用途如表2所示。
表2 Default.aspx页面中控件的属性设置及其用途
|
控件类型 |
控件名称 |
主要属性设置 |
用途 |
|
标准/ListBox控件 |
lbxDest |
SelectionMode属性设置为“Multiple” |
目的列表框 |
|
lbxSource |
SelectionMode属性设置为“Multiple” |
源列表框 |
|
|
标准/Button控件 |
Button1 |
Text属性设置为“<<” |
执行全选功能 |
|
Button2 |
Text属性设置为“>>” |
执行全删功能 |
|
|
Button3 |
Text属性设置为“<” |
执行单选功能 |
|
|
Button4 |
Text属性设置为“>” |
执行单删功能 |
如果需要将源列表框中的项全部移到目的列表框中,可以单击【<<】按钮。【<<】按钮的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++;
}
}
下面示例实现的主要功能是对ListBox控件中的列表项进行上移和下移操作。执行程序,示例运行结果如图6所示,在列表框中选中最后一项,单击【上移】按钮后,选中的项将会向上移动,运行结果如图7所示。
图6 ListBox控件(上移前)

图7 ListBox控件(上移后)
程序实现的主要步骤:
新建一个网站,默认主页为Default.aspx,在Default.aspx页面上添加一个ListBox控件和4个Button按钮,其属性设置及其用途如表3所示。
表3 Default.aspx页面中控件的属性设置及其用途
|
控件类型 |
控件名称 |
主要属性设置 |
用途 |
|
标准/ListBox控件 |
lbxSource |
SelectionMode属性设置为“Multiple” |
列表框 |
|
标准/Button控件 |
Button1 |
Text属性设置为“上移” |
执行上移选中项功能 |
|
Button2 |
Text属性设置为“下移” |
执行下移选中项功能 |
|
|
Button3 |
Text属性设置为“循环上移” |
执行循环上移选中项功能 |
|
|
Button4 |
Text属性设置为“循环下移” |
执行循环下移选中项功能 |
如果需要将列表框中选中的项上移,可以单击【上移】按钮。【上移】按钮的Click事件代码如下:
protected void Button1_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--;
}
}
如果需要将列表框中选中的项向下移动,可以单击【下移】按钮。【下移】按钮的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++;
}
}