组合框控件将文本框和列表框的功能结合在一起。有了这个控件,用户可通过在组合框中输入文本来选定项目,也可从列表中选定项目。
图 7.6 ComboBox 控件
组合框向用户提供了供选择的列表。如果项目数超过了组合框能够显示的项目数,控件上将自动出现滚动条。用户即可上下或左右滚动列表。
通常,组合框适用于建议性的
选项列表,而当希望将输入限制在列表之内时,应使用列表框。组合框包含编辑区域,因此可将不在列表中的选项输入列区域中。
此外,组合框节省了窗体的空间。只有单击组合框的向下箭头时(样式 1 的组合框除外,它总是处于下拉状态)才显示全部列表,所以无法容纳列表框的地方可以很容易地容纳组合框。
详细信息 关于这些控件的简单示例,请参阅“窗体、控件和菜单”中的“使用 ListBox 和 ComboBox”。有关列表框控件的详细信息,还请参阅本章后面的“使用 List Box 控件”。
Visual Basic 中学习版和数据绑定版的 ComboBox 控件。虽然通过这两个版本都可以显示、编辑和更新大多数标准类型数据库中的信息,但是 DBCombo 提供了更高级的数据访问特性。DBCombo 控件还支持一组与标准组合框控件不同的属性和方法。
详细信息 关于详细信息,请参阅“访问数据”中“使用 DBList 和 DBCombo”。
此处有三种组合框样式。每种样式都可在设计时或运行时来设置,而且每种样式都使用数值或相应的 Visual Basic 常数来设置组合框的样式。
样式 | 值 | 常数 |
下拉式组合框 | 0 | vbComboDropDown |
简单组合框 | 1 | vbComboSimple |
下拉式列表框 | 2 | vbComboDropDownList |
图 7.7 组合框样式
在缺省设置 (Style = 0) 下,组合框为下拉式。用户可(象在文本框中一样)直接输入文本,也可单击组合框右侧的附带箭头打开选项列表。选定某个选项后,将此选项插入到组合框顶端的文本部分中。当控件获得焦点时,也可按 ALT+ DOWN ARROW 键打开列表。
将组合框 Style 属性设置为 1 将指定一个简单的组合框,任何时候都在其内显示列表。为显示列表中所有项,必须将列表框绘制得足够大。当选项数超过可显示的限度时将自动插入一个垂直滚动条。用户可直接输入文本,也可从列表中选择。象下拉式组合框一样,简单组合框也允许用户输入那些不在列表中的选项。
下拉式列表框 (Style = 2 ) 与正规列表框相似─ 它显示项目的列表,用户必须从中选择。但下拉式列表框与列表框的不同之处在于,除非单击框右侧的箭头,否则不显示列表。这种列表框与下拉式组合框的主要差别在于,用户不能在列表框中输入选项,而只能在列表中选择。当窗体上的空间较少时,可使用这种类型的列表框。
为在组合框中添加项目,应使用 AddItem 方法,其语法如下:
box.AddItem item[, index]
参数 | 描述 |
box | 列表框或组合框名称。 |
item | 在列表中添加的字符串表达式。若 item 为文字常数,则用引号括起来。 |
index | 指定新项目在列表中的插入位置。index 为 0 表示第一个位置。若省略 index,则项目插入在列表末尾(或正确的排序顺序处)。 |
通常在 Form_Load 事件过程中添加列表项目,但也可在任何时候使用 AddItem 方法。这样一来就能够动态地(响应用户的操作)在列表中添加项目。
以下代码将 "Chardonnay," "Fum_ Blanc," "Gewürztraminer," 和 "Zinfandel" 放置到名为 Combo1,Style 属性为 0 (vbComboDropDown) 的组合框中:
Private Sub Form_Load ()
Combo1.AddItem "Chardonnay"
Combo1.AddItem "Fum_ Blanc"
Combo1.AddItem "Gewürztraminer"
Combo1.AddItem "Zinfandel"
End Sub
运行时,只要加载窗体,而且用户单击向下箭头,则将显示如图 7.8 所示的列表。
图 7.8 “葡萄酒清单”组合框
在设计时,也可设置组合框控件“属性”窗口的 List 属性,从而在列表中添加项目。选定 List 属性选项并单击向下箭头后就可输入列表项目,然后按 CTRL+ENTER 组合键换到新的一行。
只能将项目添加到列表的末尾。所以,如果要将列表按字母顺序排序,则应将 Sorted 属性设置为 True。关于详细的信息,请参阅后面“排序列表”。
为了在列表指定位置添加项目,应在新项目后指定索引值。例如,下行代码将 "Pinot Noir" 插入到第一个位置并把其它项目的位置向下调整:
Combo1.AddItem "Pinot Noir", 0
注意,指定列表中的第一个位置的是 0 而不是 1(见图 7.9)。
图 7.9 向列表添加项目
将 Sorted 属性设置为 True 并省略索引,则可在列表中指定按字母顺序添加的项目。排序时不区分大小写;所以 "chardonnay" 和 "Chardonnay" 被看作一个词。
将 Sorted 属性设置为 True 之后,使用带有 index 参数的 AddItem 方法将导致不可预料的非排序结果。
可在组合框中用 RemoveItem 方法删除项目。RemoveItem 有一个参数 index,它指定要删除的项目:
box.RemoveItem index
box 及 index 参数和 AddItem 中的参数相同。
例如,为了删除列表中的第一个项目,应添加下面一行代码:
Combo1.RemoveItem 0
为了在组合框中删除所有列表项目,应使用 Clear 方法:
Combo1.Clear
获取当前选定项目值的最简单的常用方法就是使用 Text 属性。在运行时无论向控件的文本框部分输入了什么文本,Text 属性都与这个文本相对应。这可以是选定的列表选项,或者是用户在文本框中输入的字符串。
例如,如果用户选定列表框中的 "Chardonnay",则通过下列代码显示有关 Chardonnay 的信息:
Private Sub Combo1_Click ()
If Combo1.Text = "Chardonnay" Then
Text1.Text = "Chardonnay is a medium-bodied _
white wine."
End If
End Sub
Text 属性包含 Combo1 列表框中当前选定的项目。代码查看是否选择了 "Chardonnay",若是如此,则在文本框中显示信息。
有了 List 属性就可访问列表中所有项目。该属性包含一个数组,而且列表中的每个项目都是数组的元素。每一项都表示为字符串的形式。为了引用列表中的项目,应使用如下语法:
box.List(index)
box 参数引用组合框,而 index 是项目的位置。顶端项目的索引为 0,下一个项目的索引为 1,依次类推。例如,在文本框中,以下语句显示列表中的第三个项目 (index = 2):
Text1.Text = Combo1.List(2)
欲知组合框列表中选定项目位置,请使用 ListIndex 属性。该属性设置或返回控件中当前选定项目的索引值,而且只在运行时有效。对组合框的 ListIndex 属性进行设置也会触发控件的 Click 事件。
若选定第一个(顶端)项目,则属性值为 0,选定的下一个项目属性值为 1,依次类推。如果未选定项目,或者用户在组合框中输入选项(样式 0 或 1)而不在列表中选择现有项目,则 ListIndex 为 –1。
注意 NewIndex 属性可用来跟踪列表中最后添加的项目的索引。向排序列表插入项目时,这一点很有用。
为了返回组合框中的项目数,应使用 ListCount 属性。例如,下列语句用 ListCount 属性判断组合框中的项目数:
Text1.Text = "You have " & Combo1.ListCount & " _
entries listed"