使用 ListBox 控件

ListBox 控件显示项目列表,用户可从中选择一个或多个项目。

图7.32   ListBox 控件

列表框为用户提供了选项的列表。虽然也可设置多列列表,但在缺省时将在单列列表中垂直显示选项。如果项目数目超过列表框可显示的数目,控件上将自动出现滚动条。这时用户可在列表中上、下、左、右滚动。图 7.36 所示为一个单列列表框。

图7.33   单列列表框

数据绑定特性

Visual Basic 包含 ListBox 控件的标准版本 (ListBox) 和数据绑定版本 (DBList) 。虽然两种版本的控件都能显示、编辑和更新大多数标准类型数据库的信息,但是 DataList 提供了更高级的数据访问功能。DataList 控件还支持一套与标准 ListBox 控件不同的属性和方法。

详细信息   请参阅“使用DataCombo 和 DataList 控件”以获得有关 Listbox 控件的数据绑定版本的详细信息。Click 和 Double-Click 事件

对于列表框事件,特别是当列表框作为对话框的一部分出现时,建议添加一个命令按钮,并把该按钮同列表框并用。按钮的 Click 事件过程应该使用列表框的选项执行适于应用程序的操作。

双击列表中的项目与先选定项目然后单击命令按钮,这两者应该具有相同的效果。为此,应在 ListBox 控件的 DblClick 过程中调用命令按钮的 Click 过程:

Private Sub List1_DblClick ()
   Command1_Click
End Sub

也可将命令按钮的 Value 属性值设置为 True,这就将自动调用事件过程:

Private Sub List1_DblClick ()
   Command1.Value = True
End Sub

这将为使用鼠标的用户提供快捷方式,同时也没有妨碍使用键盘的用户执行同样的操作。注意,没有与 DblClick 事件等价的键盘命令。

向列表添加项目

为了向列表框中添加项目,应使用 AddItem 方法,其语法如下:

box.AddItem item[, index]

参数 描述
box 列表框的名称。
item 添加到列表中的字符串表达式。若 item 是文字常数,则用引号将它括起来。
index 指定在列表中插入新项目的位置。index 为 0 表示第一个位置。若省略 index,则将项目插入在末尾(或按排序次序插入在适当的位置)。

通常在 Form_Load 事件过程中添加列表项目,但也可在任何时候使用 AddItem 方法添加项目,于是可动态(响应用户的操作)添加项目。

下列代码将 "Germany"、"India"、"France" 和 "USA" 添加到名为 List1 的列表框中:

Private Sub Form_Load ()
   List1.AddItem "Germany"
   List1.AddItem "India"
   List1.AddItem "France"
   List1.AddItem "USA"
End Sub

只要在运行时加载窗体就会出现如图 7.34 所示的列表。

图 7.34   "Countries" 列表框

在指定位置添加项目

为了在指定位置添加项目,应对新项目指定索引值。例如,下行代码将 "Japan" 插入到第一个位置并把其它项目向下调整:

List1.AddItem "Japan", 0

注意,是 0 而不是 1 指定列表中的第一个位置(见图 7.38)。

图 7.35   向列表添加项目

设计时添加项目

通过设置 ListBox 控件“属性”窗口的 List 属性还可在设计时向列表添加项目。在选定了 List 属性选项并单击向下箭头时,可输入列表项目并按 CTRL+ENTER 组合键换行。

只能在列表末端添加项目。所以,如果要将列表按字母顺序排序,则应将 Sorted 属性设置成 True。关于详细的信息,请参阅下面“排序列表”。

排序列表

可以指定要按字母顺序添加到列表中的项目,为此将 Sorted 属性设置为 True 并省略索引。排序时不区分大小写;因此单词 "japan" 和 "Japan" 将被同等对待。

Sorted 属性设置为 True 后,使用带有 index 参数的 AddItem 方法可能会导致不可预料的非排序结果。

从列表中删除项目

可用 RemoveItem 方法从列表框中删除项目。RemoveItem 有一参数 index,它指定删除的项目:

box.RemoveItem index

box index 参数与 AddItem 中的参数相同。

例如要删除列表中的第一个项目,可添加下行代码:

List1.RemoveItem 0

要删除连结版或标准版的列表、组合框中的所有项目,应使用 Clear 方法:

List1.Clear

通过 Text 属性获取列表内容

通常,获取当前选定项目值的最简单方法是使用 Text 属性。Text 属性总是对应用户在运行时选定的列表项目。

例如,下列代码在用户从列表框中选定 "Canada" 时显示有关加拿大人口的信息:

Private Sub List1_Click ()
   If List1.Text = "Canada" Then
      Text1.Text = "Canada has 24 million people."
   End If
End Sub

Text 属性包含当前在 List1 列表框中选定的项目。代码检查是否选定了 "Canada",若已选定,则在 Text 框中显示信息。

用 List 属性访问列表项目

可用 List 属性访问列表的全部项目。此属性包含一个数组,列表的每个项目都是数组的元素。每个项目以字符串形式表示。引用列表的项目时应使用如下语法:

box.List(index)

box 参数是列表框的引用,index 是项目的位置。顶端项目的索引为 0,接下来的项目索引为 1,依此类推。例如,下列语句在一个文本框中显示列表的第三个项目(index = 2):

Text1.Text = List1.List(2)

用 ListIndex 属性判断位置

如果要了解列表中已选定项目的位置,则用 ListIndex 属性。此属性只在运行时可用,它设置或返回控件中当前选定项目的索引。设置列表框的 ListIndex 属性也将触发控件的 Click 事件。

如果选定第一个(顶端)项目,则属性的值为 0,如果选定下一个项目,则属性的值为 1,依此类推。若未选定项目,则 ListIndex 值为 –1。

注意 NewIndex 属性可用来跟踪添加到列表的最后一个项目的索引。在向排序列表插入项目时,这一点十分有用。

使用 ListCount 属性返回项目数

为了返回列表框中项目的数目,应使用 ListCount 属性。例如,下列语句用 ListCount 属性判断列表框中的项目数:

Text1.Text = "You have " & List1.ListCount & " _
entries listed"

创建多列和多选项列表框

可用 Columns 属性指定列表框中的列数目。此属性取值如下:

描述
0 垂直滚动的单列列表框。
1 水平滚动的单列列表框。
>1 水平滚动的多列列表框。

如有必要,Visual Basic 可自动换行显示列表项目并为列表添加水平滚动条;若列表只填充在单列中则不添加滚动条。Visual Basic 可根据需要自动换列显示。注意,若列表框的项目比列宽度要宽,则会截去文本超出的部分。

用户可从列表中选择多个项目。设置 MultiSelect 属性来处理标准列表框中的多项选择,MultiSelect 属性取值如下:

选项类型 描述
0 标准列表框。
1 简单多项选择 单击或按 SPACEBAR 键选定列表中的附加项目,或撤消对附加项目所作的选定。
2 扩充的多项
选择
可用 SHIFT+ 单击或 SHIFT+ 箭头键选定从上一个选定项到当前的选项之间的所有选项。CTRL+ 单击将选定(或撤消选定)列表中的项目。

详细信息 关于 Columns 和 MultiSelect 属性的详细信息,请参阅本章后面的“列表框控件方案 2:创建多列列表框”。