列表框控件方案 2:创建多列列表框

要创建多列、多选择列表框,有必要设置列表框的 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