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 属性总是对应用户在运行时选定的列表项目。
例如,下列代码在用户从列表框中选定 "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 属性访问列表的全部项目。此属性包含一个数组,列表的每个项目都是数组的元素。每个项目以字符串形式表示。引用列表的项目时应使用如下语法:
box.List(index)
box 参数是列表框的引用,index 是项目的位置。顶端项目的索引为 0,接下来的项目索引为 1,依此类推。例如,下列语句在一个文本框中显示列表的第三个项目(index = 2):
Text1.Text = List1.List(2)
如果要了解列表中已选定项目的位置,则用 ListIndex 属性。此属性只在运行时可用,它设置或返回控件中当前选定项目的索引。设置列表框的 ListIndex 属性也将触发控件的 Click 事件。
如果选定第一个(顶端)项目,则属性的值为 0,如果选定下一个项目,则属性的值为 1,依此类推。若未选定项目,则 ListIndex 值为 –1。
注意 NewIndex 属性可用来跟踪添加到列表的最后一个项目的索引。在向排序列表插入项目时,这一点十分有用。
为了返回列表框中项目的数目,应使用 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:创建多列列表框”。