要创建多列、多选择列表框,有必要设置列表框的 Columns 和 MultiSelect 属性。下例中用这些属性创建这种列表框。
如图 7.37 所示,在运行应用程序时将会看到,列表框包含两列。
图 7.37 多列列表框
如果绘制的列表框大到可在一列中容纳所有项目,则第二列为空列;只有在列表框长度不够时,其它的项目才换行显示并自动添加水平滚动条。请调整顶端列表框的大小并添加附加的列表项目,以观察 Visual Basic 如何自动处理多个列。
示例中使用 Selected 属性─ 一个包含列表框选定状态的布尔数组─ 判断选定了哪些项目。数组中的每个元素对应一个列表项,选定项目的数组元素值为 True,未选定项目的数组元素值为 False。从列表中选定项目后,代码将检查每个数组元素是否被设置为 True。如果项目的对应数组元素被设置为 True,则用 AddItem 方法将此项目添加到第二个列表(正常的单列列表框)中。
如下图所示,设置示例中控件的属性。
对象 | 属性 | 设置值 |
窗体 | Caption | Multiple-Column 列表框 |
顶端的列表框 | Name Columns MultiSelect |
lstTop 2 2-Extended |
底部的列表框 | Name | lstBottom |
第一个命令按钮 | Name Caption |
cmdTransfer &Transfer |
第二个命令按钮 | Name Caption |
cmdClear &Clear |
第三个命令按钮 | Name Caption |
cmdClose &Close |
MultiSelect 属性用来选定列表框中的一组值。如果单击第一个列表项目,然后按 SHIFT 键并单击最后一个项目(或用 SHIFT+ DOWN ARROW 键),则将选定此范围内的所有项目。
将下列代码添加到 Form_Load 过程中以初始化顶端的列表,1stTop:
Private Sub Form_Load () lstTop.AddItem "Paris" lstTop.AddItem "New Orleans" lstTop.AddItem "San Francisco" lstTop.AddItem "Chicago" lstTop.AddItem "Seattle" lstTop.AddItem "Toronto" lstTop.AddItem "New York" lstTop.AddItem "Tbilisi" lstTop.AddItem "Moscow" lstTop.AddItem "Portland" '
选定一对项目。1stTop.Selected(0) = True
1stTop.Selected(1) = True
End Sub
注意 向“属性”窗口的 List 属性中输入项目,这样,不必重复使用 AddItem 方法就可在列表框中添加项目。在输入每个项目后按 CTRL+ENTER 键换行。用这种方法就可在多列列表框中输入多个项目。
将下列代码添加到 1stTop_DblClick 事件过程中:
Private Sub 1stTop_DblClick () cmdTransfer.Value = True '
按“传送”按钮。End Sub
将下列代码添加到“传送”命令按钮的 Click 事件过程中:
Private Sub cmdTransfer_Click () For n = 0 To (lstTop.ListCount - 1) '
若被选定,则添加到列表中。If lstTop.Selected(n) = True Then
lstBottom.AddItem lstTop.List(n)
End If
Next
cmdClear.Enabled = True
End Sub
注意数组索引值以什么方式从 0 开始,并向 ListCount -1
转变。
将下列代码添加到“清除”命令按钮的 Click 事件过程中:
Private Sub cmdClear_Click ()
lstBottom.Clear
cmdClear.Enabled = False
End Sub
将下列代码添加到“关闭”命令按钮的 Click 事件过程中。
Private Sub cmdClose_Click ()
Unload Me
End Sub