• 沒有找到結果。

组合框(ComboBox)控件组合了文本框和列表框的特性,用户既可以在它的文本框部分 输入文本以选择项目,也可以在它的列表框部分选择项目。当用户在列表框部分选定某个项目 之后,该项目会自动出现在文本框部分。列表框将用户的选择限制

在项目列表之内,而组合框则允许用户选择项目列表中所没有的项 目。在 VB 的工具箱中,组合框控件的图标如图 6-13 所示。

1.属性

组合框控件的大部分属性与列表框控件相同,此外还有一些与文本框相同的属性。表 6-5 列出了组合框控件的常用属性。

表 6-5 组合框的常用属性

属性 作用

Name 设置组合框的对象名

Text 确定用户当前选择的项目或者在文本框部分输入的项目

List 设置组合框所显示的项目列表

ListCount 确定组合框中项目的总数

图 6-13 组合框图标

续表

属性 作用

ListIndex 确定当前选中的项目在项目列表中的索引值 Selected 确定项目列表中某个项目是否被选中

Style 设置组合框的类型

说明:

(1)程序第一个组合框控件的默认对象名是 Combo1,第二个组合框控件的默认对象名 是 Combo2,依此类推。

(2)Style 的属性值有 3 个,默认值是 0,如表 6-6 所示。

表 6-6 Style 属性值

常量 含义

Dropdown Combo 0 下拉式组合框 Simple Combo 1 简单组合框 Dropdown List 2 下拉式列表框

下拉式组合框如图 6-14 所示。它将文本框和下拉式列表框组合在一起,用户可以直接用 键盘在文本框中输入项目,也可以单击下拉按钮,打开列表框进行选择。

简单组合框如图 6-15 所示。它将文本框和列表框简单地组合在一起,列表框的项目列表 直接显示在窗体上。

下拉式列表框如图 6-16 所示。它的功能与下拉式组合框相似,但是用户只能从列表框中 进行选择,而不能直接在文本框中输入项目。

图 6-14 下拉式组合框 图 6-15 简单组合框 图 6-16 下拉式列表框 思考:当组合框为下拉式列表框类型时,用户能否选择项目列表中所没有的项目?

2.事件

根据类型的不同,组合框控件能够响应的事件也有所不同。所有类型的组合框都能够响 应 Click 事件,但是只有简单组合框(Style 的属性值为 1)才能响应 DblClick 事件。此外下拉 式组合框和简单组合框还可以响应 Change 事件。

3.方法

AddItem、RemoveItem 和 Clear 等方法也同样适用于组合框控件。例如在组合框 Combo1 中添加一个项目“土耳其”,可以写为:

Combo1.AddItem "土耳其"

例如清空组合框 Combo1 中的所有项目,可以写为: 的项目列表中。在 List2 的 DblClick 事件过程中,通过 ListIndex 属性获取用户当前选项的索 引值,调用 RemoveItem 方法把该项目删除。

在命令按钮 Command1 的 Click 事件过程中,通过组合框 Combo1 的 Text 属性获取用户 选择的系,在循环结构中访问列表框 List2 的 List 数组中的元素,获取所有的选项,并做相应 的处理。

Private Sub Form_Load() Combo1.AddItem "计算机"

Combo1.AddItem "汽车"

Combo1.AddItem "机械"

Combo1.AddItem "管理"

End Sub

Private Sub Command1_Click() Dim s As String, i As Integer

Private Sub Command2_Click() End

End Sub

Private Sub List1_DblClick() Dim s As String

s = List1.Text '从 List1 得到选中的项目 List2.AddItem s '将该项目添加到 List2 中 End Sub

Private Sub List2_DblClick()

List2.RemoveItem List2.ListIndex '删除选中的项目 End Sub

运行程序,结果如图 6-17 所示。

图 6-17 例 6.11 的运行结果

说明:程序运行时,用户可以在组合框的列表框部分选择学生所在的系,也可以在文本 框部分输入项目列表中未列出的系。如果用户在“爱好”列表框中双击一个项目,则“已选爱 好”列表框中将自动出现该项目,表示用户选中了某个爱好。如果用户在“已选爱好”列表框 中双击一个项目,则该项目将自动消失,表示用户放弃了对某个爱好的选择。

该程序有许多需要完善的地方。例如用户在“爱好”列表框中反复双击同一个项目,则 该项目就会多次出现在“已选爱好”列表框中,造成对爱好的重复选择。解决方法是在向“已 选爱好”列表框中添加项目之前,先判断其中是否已存在该项目。如果是新项目就可以添加,

否则不予添加。部分代码如下:

Private Sub List1_DblClick()

Dim s As String, flag As Boolean, i%

s = List1.Text '从 List1 得到选中的项目 flag = False

For i = 0 To List2.ListCount - 1

If s = List2.List(i) Then '在 List2 中查找该项目 flag = True

Exit For End If Next i

If Not flag Then '所选项目是以前未选过的项目 List2.AddItem s '将该项目添加到 List2 中 End If

End Sub

思考:如果只安排一个“爱好”列表框,而没有“已选爱好”列表框,并且把列表框控 件的 MultiSelect 属性值设置为 1,即允许多选。此时应如何编写程序,使得可以显示用户在“爱 好”列表框中选择的多个项目?

相關文件