列表框和组合框
列表框(ListBox)提供一个项目清单给用户从中进行选择,它允许用户用鼠标选择一个或几个项目。当项目超出了列表框设计时的高度,系统会自动为列表框添加一个垂直滚动条。
组合框(ComboBox)是兼有文本框和列表框功能的控件,用户可以在组合框的编辑区中用键盘输入所需要的项目,也可以像列表框一样,通过鼠标从列表中选择所需要的项目(但只能从中选择一项)。
一、列表框常用属性、事件和方法
列表框中的项目既可以通过属性窗口手动添加,也可以在代码中用语句自动添加。添加进来的项目内容都被存放在列表框的List属性中,该属性是一个字符串型数组。用户选择项目、添加项目、删除或清除项目等操作,就是围绕这个数组进行的。
1.常用属性
⑴ List属性
该属性是一个字符串型数组,用于存放列表框的各个选项。List数组的下标从0开始,例如,在图1中,若列表框的名称为List1,则列表框中第一项,List1.List(0)的值是“孙扬”,第四项List1.List(3)的值是“李剑”。
向List数组添加元素(即向列表框添加选项)有两种方法。
方法一:在设计阶段使用属性窗口添加。选定列表框后,在属性窗口中打开List属性依次添加项目,每一项结束后按“Ctrl+回车”键换行,继续输入下一项。
方法二:在程序中用代码添加。用代码添加项目,要用到列表框的AddItem方法。具体参见本节中列表框的常用方法。
⑵ ListCount属性
该属性值为整型,用来返回的是列表框中选项的数量。该属性只能在程序中设置或引用。
由于存放列表框选项的数组List的下标从0开始,所以在程序中经常用ListCount-1表示列表中最后一项的下标。而List1.List(ListCount-1)表示列表框中最后一项。
⑶ ListIndex属性
该属性值为整型,用来设置或返回列表框中被选中的选项在List数组中的下标。如果未选中任何选项,那么ListIndex的值为-1。该属性只能在程序中用代码设置或引用。
⑷ Selected属性
该属性值是一个逻辑型数组,用于存放列表框的各个选项的选定状态。Selected数组的下标从0开始,数组元素的值表示对应下标的列表框项目是否被选中。例如,List1.Selected(2)的值为True表示第3项“曲南南”被选中,如为False表示未被选中。该属性只能在程序中设置或引用。
⑸ Sorted属性
该属性值为逻辑型,用来设置列表框中的选项是否按字母数字的升序排列。该属性只能在属性窗口中进行设置。
True:各选项按字母数字升序排列。
False(默认值):各选项按加入列表框的先后顺序排列。
⑹ Text属性
该属性值为字符串型,用来返回列表框中被选中选项的文本内容。该属性只能在程序中引用。
被选中选项的文本内容也可以用List数组的当前元素值来表示。例如,在图1所示的列表框中选中了“曲南南”,那么:
List1.Text="曲南南"
List1.List(List1.ListIndex)="曲南南"
⑺ Multiselect属性
该属性值为整型,用来设置列表框的选择方式。该属性只能在属性窗口进行设置。
0—None(默认值):禁止多项选择。
1—Simple:简单多项选择。在这种方式下,用户单击鼠标或按空格键直接可以实现多选。
2—Extended:扩展多项选择。在这种方式下,按住Ctrl键再单击鼠标或按空格键可以选择不连续的多项;按住Shift键再单击鼠标或按空格键可以选择连续的多项。
⑻ SelCount属性
该属性值为整型,用来返回列表框中被选中选项的数量。
⑼Style属性
该属性值为整型,用来设置列表框的外观样式。如图3所示。
0—Standard(默认):标准样式。
1—CheckBox:复选框样式。在这种样式下,单击项目前的复选框完成选择。
⑽ Columns属性
该属性值为整型,用来设置列表框的列数。默认值为0。
0(默认值):表示所有项目呈单列显示。
大于等于1:允许多列显示。
2.常用事件
⑴ Click
当单击列表框的项目时触发该事件。
⑵ DblClick
当双击列表框的项目时触发该事件。
⑶ Scroll
当拖动列表框的滚动条时触发该事件。
3.常用方法
列表框中的选项可以在设计阶段通过属性窗口添加,也可以在程序中用AddItem方法添加,用RemoveItem或Clear方法删除。
⑴ AddItem方法
格式:[对象名.]AddItem 项字符串[,项索引号]
功能:向列表框中添加新项目
说明:
①对象可以是列表框或组合框。
②项字符串必须是字符串表达式。
③项索引号决定新增选项在列表框或组合框中的序号(即List数组元素的下标,从0开始),如果省略项索引号,则把新增选项添加到所有项目的末尾。
例如:List1.AddItem “刘月” ‘在列表框1末尾追加新选项“刘月”
List1.AddItem “王洋” ,2 ‘在列表框1的第3项前插入新选项“王洋”
⑵ RemoveItem方法
格式:[对象名.]RemoveItem项索引号
功能:在列表框中删除指定的选项
说明:
①对象可以是列表框或组合框。
②项索引号是被删除选项在列表框或组合框中的序号(即List数组元素的下标)。
例如:List1.RemoveItem 2 ‘删除下标为2的项目,即第3项
List1.RemoveItem List1.ListIndex ‘删除被选中的项目
⑶Clear方法
格式:[对象名.]Clear
功能:清除列表框中的所有选项
说明:对象可以是列表框、组合框或剪贴板。
例如:List1.Clear
=================================================================================
实验
设计利用列表框和组合框管理购票订单的系统。程序具有添加和删除订单功能。
项目说明:程序运行结果如图1所示。单击“增加”按钮时,会弹出一个输入框,在输入框中输入新项目后确定,新项目被添加到列表框中已有项目的末尾。选中列表框中的一个项目后单击“删除”按钮,该项目将从列表框中被删除。
项目分析:列表框和组合框中选中内容添加到“已选订单”列表框中,这需要使用列表框的Additem方法,删除订单使用removeitem方法,清空订单使用clear方法。如果删除订单时需要先判断订单列表框的状态。
项目设计:
1.创建界面。新建一个标准EXE工程,在窗体中放置2个列表框、3个组合框、5个标签和3个命令按钮
2.设置属性。
标签及按钮的Caption属性按视频中演示内容进行设置
List1中输入所有车次,注意换行时按alt+enter组合键,两个组合框中输入所有车站名,list2将内容清空
3.编写代码。
在确认按钮click事件中编写向list2中添加项目,内容就是车次、出发地、目的地的选中项内容
删除订单时首先要判断列表框的状态,listcount是否为0,listindex是否为-1
清空订单按钮直接用clear方法可以清除列表框所有列表项
4.运行程序
首先选择车次,然后选择出发地和目的地,单击确认按钮,则会产生一条新的订单项,单击删除订单可以删除以选中订单,如果删除时未选中或订单为空都会弹出提示消息框。
各事件过程的代码如下:
PrivateSub Command1_Click()
List2.AddItemList1.Text + Space(3) + Combo1.Text + "->" + Combo2.Text
EndSub
PrivateSub Command2_Click()
If List2.ListCount > 0 Then
If List2.ListIndex <> -1 Then
List2.RemoveItem List2.ListIndex
Else
MsgBox "请先选择要删除订单"
End If
Else
MsgBox "没有订单"
EndIf
EndSub
PrivateSub Command3_Click()
List2.Clear
EndSub
4.运行程序
首先选择车次,然后选择出发地和目的地,单击确认按钮,则会产生一条新的订单项,单击删除订单可以删除以选中订单,如果删除时未选中或订单为空都会弹出提示消息框。

