• 沒有找到結果。

使用列表框(ListBox)可以从中进行选择数据项的滚动列表。组合框(ComboBox)是将 文本框和列表框的功能结合在一起,用户可通过在组合框中输入文本来选定项目,也可从列表 中选定项目。

5.4.1 列表框

列表框控件显示一个项目列表,让用户从其中选择一项或多项。如果项目总数超过了可 显示的空间,列表框会自动添加滚动条。列表框最主要的特点是只能从其中选择,而不能直接 写入或修改其中的内容,因此,它能满足从现有选项中快速选择数据项的要求。

列表框内的项目称为表项,表项的加入是按一定的顺序号进行的,这个顺序号称为该表 项的索引(号)。

(1)常用属性。

1)Name 属性:设置控件对象的名称。列表框的默认名称为 List1,List2,……。

2)List 属性:这是一个字符型(String)数组,用于存放列表框的表项。该属性引用的格 式如下:

Object.List(Index)[=String]

其中,Object 为一个列表框对象名称;Index 为列表中具体某一项的索引号;String 为字 符串表达式,指定列表项目。

List 数组的下标(Index)规定从 0 开始,也就是说,第一个元素的下标是 0。可以在设计 状态通过如图 5-12 所示的属性窗口添加数据项,每输入一项按 Ctrl+Enter 组合键换行,全部 输入完后按 Enter 键,所输入的数据项将会出现在列表框中。

3)ListIndex 属性:返回或设置控件中当前选择项目的索引(号),在窗体设计时不可用,

只能在程序中设置和引用。若未选定任何项目,则 ListIndex 的值为-1。

表达式 List(List1.ListIndex)返回当前在列表框 List1 中选择项目的字符串。若选中列表中 的第一项,则 ListIndex=0。

4)ListCount 属性:返回控件列表项目的个数。该属性只能在程序中设置和引用。列表中 最后一个元素的索引号 Index=ListCount-1。

5)Selected 属性:返回或设置在 ListBox 控件中的一个表项的选择状态。该属性是一个与 List 属性一样、有相同项数的布尔值数组。在窗体设计时是不可用的。引用格式如下:

Object.Selected(Index)[=Boolean]

其中,Object 为列表框对象名称;Index 为控件中数据项的索引号;Boolean 为一个用来 指定数据项是否被选中的布尔表达式。该属性值为 True 表示 Index 指定的表项被选中,为 False

(默认值)表示该表项没有被选中。

6)Sorted 属性:返回一个布尔值,指定控件的元素是否自动按字母表顺序排序,该属性 只能在设计状态设置。当值为:

True:列表中的项目按字符码顺序排序。

False:(默认值)列表中的项目不按字母表顺序排序。

7)Text 属性:存放在 ListBox 的列表框中选定项目的文本,返回值总与表达式 List(ListIndex) 的返回值相同。该属性为只读属性。

8)MultiSelect 属性:返回或设置一个值,该值指示是否能够在 ListBox 控件中进行复选 以及如何进行复选。在运行时是只读的。其设置值为:

0:(默认值)不允许复选。

1:简单复选。鼠标单击或按空格键在列表中选中或取消选中项(箭头键移动焦点)。

2:扩展复选。按 Shift 键并单击鼠标,或按下 Shift 键以及一个箭头键(上箭头、下 箭头、左箭头、和右箭头)将在以前选中项的基础上扩展选择到当前选中项。按 Ctrl 键并单击可以在列表中选中或取消选中项。

9)Style 属性:确定控件的样式。该属性值为:

VbListBoxStandard(0):(默认值)标准形式,为简单的文本项的列表。

VbListBoxCheckbox(1):复选框形式,每一个文本项的旁边都有一个复选框。

(2)事件。

列表框可接收 Click、DblClick 等事件。

注意:如在程序运行时向属性 ListIndex 赋值,也将触发列表框的 Click 事件。

(3)方法。

列表框中的数据项可以在设计时通过 List 属性设置,也可以在程序中用 AddItem 方法添 加,用 RemoveItem 或 Clear 方法删除。

1)AddItem 方法:用于将项目添加到 ListBox 控件的列表中。语法格式如下:

Object.AddItem Item[,Index]

其中,Object 为列表框对象名称;Item 为一个字符串表达式,用以指定添加到该对象的 项目;Index 为一个整数,用以指定新项目或行在该对象中的位置(顺序号)。

说明:如果所给出的 Index 值有效,则 Item 将放置在 Object 中相应的位置。如果省略 Index,

当 Sorted 属性设置为 True 时,Item 将添加到恰当的排序位置,当 Sorted 属性设置为 False 时,

Item 将添加到列表的尾部。

2)RemoveItem 方法:从 ListBox 控件中删除一个表项。语法格式如下:

Object.RemoveItem Index

其中,Object 为列表对象名称;Index 为一个整数,指定要删除的项或行在对象中的位置

(顺序号)。

3)Clear 方法:用于清除 ListBox 的内容,语法格式如下:

Object.Clear

(4)列表框表项的输出。

输出列表框中的表项,有下面两种常用方法:

1)单击列表框内某一表项,则该表项值存放在 Text 属性中。例如:

x=List1.Text '把选定的表项值存放在变量 x 中

x=List1.List(List1.ListIndex)

2)指定索引号以获取表项的内容。例如:

List1.ListIndex=4 x=List1.Text

x=List1.List(4)

下面通过例子说明列表框的应用。

例 5-13 设计程序,找出 100~1000 范围内所有能同时被 3 和 7 整除的自然数。

分析:某数 n 能同时被 3 和 7 整除的判别条件为 n Mod 3=0 And n Mod 7。

(1)在窗体上添加 1 个列表框 List1(显示计算结果)、1 个标签 Label1(显示提示信息)

及 1 个命令按钮 Command1。程序运行的结果如图 5-26 所示。

图 5-26 用列表框输出数据

(2)编写程序代码如下:

Private Sub Form_Load()

Label1.Caption="找出 100~1000 能被 3 和 7 整除的自然数"

Command1.Caption="计算"

End Sub

用列表框 List1 显示结果。程序代码如下:

Private Sub Command1_Click() Dim n As Integer

List1.Clear For n=100 To 1000

If n Mod 3=0 And n Mod 7=0 Then List1.AddItem n

End If Next End Sub

例 5-14 选择和移动数据,用户界面如图 5-27 所示。窗体上有 2 个标签、2 个列表框和 2 个命令按钮。左边列表框(List1)列出 10~99 之间的整数,右边列表框(List2)列出被选 中的数。程序运行时,按“选项右移”或“选项左移”可将已选择项移动到右边或左边列表框。

(1)为了简化程序,在窗体的 Load 事件过程中产生 10~99 之间整数,故使用了 Show 方法。

(2)编写程序代码如下:

Private Sub Command1_Click() '选项右移

Dim k As Integer k=0

Do While k < List1.ListCount '第 i 项被选中

If List1.Selected(k) Then '被选中项移到右边列表框 List2.AddItem List1.List(k) '从左边列表框中移除被选中项 List1.RemoveItem (k) '

Else k=k+1 End If Loop End Sub

Private Sub Command2_Click() Dim k As Integer

k=0

Do While k < List2.ListCount If List2.Selected(k) Then List1.AddItem List2.List(k) List2.RemoveItem (k)

Else k=k+1 End If Loop End Sub

Private Sub Form_Load() Form1.Caption="使用列表框示例"

Frame1.Caption="10~99 之间的整数"

Frame2.Caption="被选中的数"

Command1.Caption="选项右移"

Command2.Caption="选项左移"

Show

For i=1 To 100 List1.AddItem i Next i

End Sub

图 5-27 列表框应用示例

5.4.2 组合框

组合框是将文本框和列表框组合而成的控件,它有 3 种不同的类型,可用 style 属性设置。

组合框是输入控件中使用相当广泛的一种,它比文本框规范,比列表框灵活,节省窗体的空间。

用户可通过在组合框中输入文本来选定项目,也可从列表中选定项目。所以用组合框进行规范 化的输入是一个很好的途径。

组合框具有列表框和文本框的大部分属性和方法,还有一些自己的属性。

组合框用三种样式,每种样式都可在设计或运行时,用 Style 属性设置,而且每种样式都 可用数值或符号常数进行设置。这三种样式的 Style 设置值为:

下拉式组合框(0):vbComboDropDown。

简单组合框(1):vbComboSimple。

下拉式列表框(2):vbComboDropDownList。

(1)下拉式组合框(Dropdown Combo)。

在默认设置(Style=0)下,组合框为下拉式组合框,在屏幕上只显示文本编辑框和一个下 拉箭头。用户可以(像在文本框中一样)直接输入文本,也可单击组合框右侧的附带箭头打开 选项列表。可以认为控件由一个文本框和一个下拉列表组成。选定的数据项将显示在组合框顶 端的文本部分中。当控件获得焦点时,也可按 Alt+↓组合键打开列表。如图 5-28 所示。

图 5-28 下拉式组合框外观

(2)简单组合框。

如果 Style 属性设置为 1,组合框为简单组合框样式,顶部是一个文本框(没有下拉的箭 头),可以输入数据,下面便是一个列表框,不能收起,如图 5-29 所示。为显示列表框部分,

在添加控件时,必须将列表框绘制得足够长(大)。当选项数超过列表的显示限度时将自动插 入一个垂直滚动条。用户可直接输入文本,也可从列表中选择数据项。像下拉式组合框一样,

简单组合框也允许用户输入那些不在列表中的数据项。

(3)下拉式列表框。

如果 Style 属性设置为 2,组合框为下拉式列表框,外观像下拉式组合框,功能与单纯的 列表框相似,它只显示数据项目的列表,用户只能选择数据项,不能输入数据项,它没有文本 框部分,如图 5-30 所示。下拉式列表框与列表框的不同之处在于,只有单击列表框右侧的箭 头,或获得焦点后按 Alt+↓组合键,才能显示列表,否则不显示列表。当窗体上的空间较少 时,可使用这种类型的列表框。

图 5-29 简单组合框

图 5-30 下拉式列表框

注意:组合框的 Text 属性,对下拉式组合框和简单组合框来说,既可以是用户所选定数 据项的文本,也可以是直接从文本框输入的文本;对下拉式列表框来说,则只能是用户所选定 数据项的文本。

例 5-15 设计程序,把 10~99 之间整数放入组合框,再对组合框进行项目显示、添加、

删除、全部删除等操作。

程序设计步骤如下:

(1)在窗体上画 2 标签、1 个组合框、1 个文本框及 4 个命令按钮。程序界面如图 5-31 所示。

图 5-31 例 5-15 程序运行界面

组合框 Combo1 的 Style 属性采用默认值 0,为下拉式组合框。

(2)编写程序代码。

首先编写窗体的 Load 事件过程,设置各控件的有关属性,为组合框的列表添加数据项。

代码如下:

Private Sub Form_Load() Form1.Caption="组合框应用"

Label1.Caption="选修课程名称"

Label2.Caption="选修课程总数"

Command1.Caption="添加"

Command2.Caption="删除"

Command3.Caption="全清"

Command4.Caption="退出"

Combo1.AddItem "电子商务"

Combo1.AddItem "网页制作"

Combo1.AddItem "计算机网络技术"

Combo1.AddItem "计算机多媒体技术"

Combo1.Text=""

Combo1.TabIndex=0

Text1.Text=Combo1.ListCount End Sub

Combo1.Text=""

Combo1.SetFocus End Sub

编写“删除”命令按钮 Command2 的 Click 事件过程,实现删除选择的表项。代码如下:

Private Sub Command2_Click()

If Combo1.ListIndex <> -1 Then 'Combo1.ListIndex=-1 表示无选择项 Combo1.RemoveItem Combo1.ListIndex '移去所选择的表项

Text1.Text=Combo1.ListCount End If

End Sub

编写“全清”命令按钮 Command3 的 Click 事件过程,实现清除全部表项。代码如下:

编写“全清”命令按钮 Command3 的 Click 事件过程,实现清除全部表项。代码如下:

相關文件