03
2012
04

控件的使用--列表框和组合框

列表框和组合框都可以为用户提供选项列表,用户可以在列表中进行选择。
8.3.1 列表框控件
工具箱中列表框控件的图标为 。
列表框用来列出供操作的多项选择,用户可以通过单击某项,选择自己需要的选项并对其作某种处理。选择时从中可选取一项,也可选取多项。如果供选择的项目太多,超出了设计的长度,则Visual Basic会自动给列表框加上滚动条。在程序运行时,我们不能在列表框内进行输入。列表框的对象名默认的为List1、List2等。
1.列表框控件常用属性
(1)List属性:访问列表项目
该属性用来列出列表框项目的内容。在列表框中所有表项的值都以数组形式存放,List属性就是保存这些选项值的数组,要取出其中某项的值,只需通过访问该项对应数组的下标(注意下标值从0开始)。
引用的格式为:列表框对象名.List(Index)
其中,Index表示该项目在列表框中的位置索引值(注意第一项的索引值为0)。
例如,要在文本框中显示列表框的第二个表项的内容,我们可以写出下面的语句:
Text1.Text=List1.List(1)
(2)ListCount属性:列表框项目总数,整数类型
该属性列出了列表框中表项的数量个数。列表框中表项的排列从0-ListCount-1,即List属性下标值的范围是0-ListCount-1,总数为ListCount项。如图8.11所示,该列表框的ListCount属性值为5,其表项的排列为从0-4。
(3)ListIndex属性:判断已选项目的位置,为整数类型
该属性值为被选中表项的索引,如果没有选中任何一项,则该属性值为-1。但是要注意的是,该属性只能在运行时可用,它设置或返回控件中当前选定项目的索引。第一个项目的索引号为0,而最后一个项目的索引为 ListCount-1。如图8.11所示,选中“北京”的ListIndex为0,选中“杭州”的ListIndex为3。

图8.11 列表框
(4)Text属性:最后一次选中的表项内容,为字符串类型
该属性用来返回当前选中的表项内容。Text属性值不能直接修改。
对于单选的列表框控件List1,字符串List1.list(ListIndex)与List1.Text相等,都是被选中表项的文本。如图8.11中,最后一次选中的“杭州”的内容我们就可以用List1.Text来表示。
(5)Selected属性:判断列表框中某项的选择状态,逻辑型
该属性是一个逻辑数组,返回的值表示对应的项在程序运行时是否被选中。数组元素个数与列表框中的项目个数相同,其下标的变化范围也是从0-ListCount-1。该属性只能在程序中设计和引用。
引用的语法格式为:控件对象名.Selected(Index)=[True | False]
例如,List1.Selected(3)=True表示列表框List1的第四个项目被选中,此时ListIndex的值设置为3。
(6)MultiSelect属性:指定选项表项的方式是否具有多选的,整数类型
利用列表框控件的该属性,可以为列表框设置“单选”或“允许多选”属性。
MultiSelect属性值为0:只能单选(缺省值),不允许复选。
MultiSelect属性值为1:简单复选,鼠标单击或按下空格键在列表中选中或取消一个项目。此属性仅在Style为0时有效。
MultiSelect属性值为2:扩展多选,按下Shift并单击鼠标,或按下Shift并移动箭头键,就可以从前一个选定的项目扩展选择到当前的选择项,即选定多个连续的项目。按下 Ctrl 并单击鼠标可在列表中选中一个项目或取消一个选中的项目。此属性仅在Style为0时有效。
(7)Sorted属性:设置列表框中表项是否按照字母升序排列,逻辑型
它有True和False两个值:设为True时按升序排列;设为False时不按升序排列。该属性的默认值为False。注意该属性为只能在属性窗口中进行设置。
(8)SelCount属性:返回被选中表项的个数,整数类型
(9)Style属性:控件样式属性,整数类型
该属性用来指示控件的显示类型和行为,在运行时是只读的。
Style属性值为1,为复选框样式,如图8.12所示的左边列表框List1。
Style属性值为0(缺省值),为标准样式,如图8.12所示的右边列表框List2。

图8.12 列表框控件Style示例
若列表框控件的Style属性值为1,无论MultiSelect属性取何值,该列表框在实际使用上允许多选。
2.列表框控件的常用方法
(1)AddItem方法
用于将项目添加到列表框或组合框中。
格式:控件对象件名.AddItem 表项文本[,Index]
Index即索引值,可以指定项目文本的插入位置,省略Index则表项文本自动加到列表框末尾。Index值只能小于列表框的ListCount属性值。
如图8.12所示,我们要向列表框中添加文本,可以采用如下语句:
Private Sub Form_Load()
List2.AddItem "英语"
List2.AddItem "数学"
List2.AddItem "语文"
List2.AddItem "物理"
List2.AddItem "化学"
End Sub
此外,列表框控件的表项也可以在属性设置时添加。具体操作方法为:在属性窗口内选中List属性,在下拉框中添加文本,然后按Ctrl+Enter换行。
(2)Clear方法
该方法用以清空列表框控件中的所有表项。
格式:控件对象名.Clear
(3)RemoveItem方法
该方法用以删除列表框中的指定表项。
格式:列表框控件名.RemoveItem Index
Index即指定表项的位置索引,范围从0-ListCount-1。
例8.7 用户界面如下图所示,用于将学生学过的单词在列表框中显示出来。现要求完成:
(1)单击“增加单词”按钮,将Text1.Text中的单词添加到列表框,再显示列表框中的单词数;
(2)单击“删除单词”按钮,删除列表框中被选中的项,再显示列表框中的单词数;
(3)单击“全部清除”按钮,删除列表框中的全部选择项,再显示列表框中的单词数;
(4)单击“退出”按钮,结束程序。

图8.13 添加删除表项
1)界面设计,如图8.13,在窗体上排列出相应的列表框、文本框、标签框和命令按钮等控件。各控件的属性设置详见表8-6。
表8-6 属性设置
对象 属性 设计时属性值 说明
Label1 Caption 请输入单词
Label2 Caption 单词数
Alignment 2 居中
Text1、Text2 Text 设置为空
List1 List 选中List属性在下拉框中添加表项,用Ctrl+Enter实现换行。
Command1 Caption 增加单词
Command2 Caption 删除单词
Command3 Caption 全部删除
Command4 Caption 结束
2)具体代码如下:
Private Sub Command1_Click()
List1.AddItem Text1.Text
Text2.Text = Str(List1.ListCount) ' 计算表项个数
Text1.Text = ""
End Sub
Private Sub Command2_Click()
If List1.ListIndex = -1 Then '未选中任何表项,也可写成List1.ListIndex < 0
MsgBox "重新选择"
Else
List1.RemoveItem List1.ListIndex ' 移除被选中的表项
Text2.Text = Str(List1.ListCount)
End If
End Sub
Private Sub Command3_Click()
List1.Clear ' 清除列表框中的所有表项
Text2.Text = Str(List1.ListCount)
End Sub
Private Sub Command4_Click()
End ' 退出
End Sub
Private Sub Form_Load()
Text2.Text = Str(List1.ListCount) ' 显示表项个数
End Sub
3.列表框控件常用事件
(1)Click单击事件
当单击某一列表项目时,将触发列表框控件的Click事件。该事件发生时系统会自动改变列表框控件的ListIndex、Selected、Text等属性,无需另行编写代码。
(2)DblClick双击事件
当双击某一列表项目时,将触发列表框控件的DblClick事件。
例8.8 编程,程序窗体界面如图8.14所示。设计时,在窗体上设有2个列表框、4个命令按钮、1个框架和3个标签框。具体程序编程思想如下:单击“>”按钮,List1中已选表项移至List2中;单击“>>”按钮,List1中所有表项移动到List2中;单击“<<”按钮,List2中所有表项移动到List1中;单击“<”按钮,List2中已选表项移至List1中。

图8.14 列表框数据移动例题
1) 界面设计:如图8.14所示,各控件的属性设置如表8-7。
表8-7 属性设置表
对象 属性 设计时属性值 说明
Label1 Caption 单击“>”按钮,List1中已选表项移至List2中;单击“>>”按钮,List1中所有表项移动到List2中;单击“<<”按钮,List2中所有表项移动到List1中;单击“<”按钮,List2中已选表项移至List1中
Label2 Caption 列表框1
Label3 Caption 列表框2
List1、List2 Text 设置为空
Frame1 Caption 简介
Command Caption >
Command2 Caption >>
Command3 Caption <
Command4 Caption <<
2)具体代码如下:
Private Sub Form_Load() ' 为List1添加表项
List1.AddItem "123"
List1.AddItem "456"
List1.AddItem "524"
List1.AddItem "135"
List1.AddItem "653"
End Sub
Private Sub Command1_Click()
If List1.ListIndex = -1 Then ' 未选中表项
MsgBox "请选择表项"
Else
List2.AddItem List1.Text ' 将List1中选中的内容添加到List2
List1.RemoveItem List1.ListIndex ' 删除List1中选中的内容
End If
End Sub
Private Sub Command2_Click() ' 实现移动数据的一种方法
Dim i As Integer
For i = 0 To List1.ListCount – 1 ' 将List1中所有表项添加到List2
List2.AddItem List1.List(i)
Next i
List1.Clear ' 清除List1中的所有表项
End Sub
Private Sub Command3_Click()
Do While List2.ListCount <> 0 ' 列表框中移动数据的另一种方法
List1.AddItem List2.List(0)
List2.RemoveItem 0
Loop
End Sub
Private Sub Command4_Click()
If List2.ListIndex = -1 Then
MsgBox "请选择表项"
Else
List1.AddItem List2.Text ' 将List2中选中的内容添加到List1
List2.RemoveItem List2.ListIndex ' 删除List2中选中的内容
End If
End Sub
8.3.2 组合框控件
控件箱中组合框控件的图标为 。
组合框控件对象名默认为Combo1、Combo2……
组合框控件兼有列表框和文本框的特性:组合框中的列表框部分提供选择项列表,文本框部分显示选择的结果。
1.组合框控件的常用属性
组合框的属性和列表框的基本相同,这里介绍一些与列表框不同的属性。
(1)Style属性:组合框样式属性,整数类型
组合框有3种样式,都是只读属性,只能在设计界面时设置。
 Style属性值为0(该属性的缺省值),为下拉式组合框。
用户可以像文本框一样直接输入文本,也可单击组合框右侧的箭头按钮打开选择列表。选定某个选项后,将选项插入到组合框顶端的文本部分。
 Style属性值为1,为简单组合框。
任何时候都在组合框内显示列表。为了能够显示列表中的所有表项,必须将组合框绘制得足够大,当选择数超过可显示的限度时将自动插入一个垂直滚动条。用户可以直接输入文本,也可从列表中选择。
 Style属性值为2,为下拉式列表框。
下拉式列表框包括一个不可输入文本的文本框和一个下拉式列表框。单击箭头按钮可以引出列表框,它限制用户输入,如图8.15所示。

图8.15 组合框控件style属性不同设置的显示效果
第一个组合框控件的style属性值为0,它不仅可以下拉、弹出选项的列表框,又可以在文本框内编辑。
第二个组合框控件的style属性值为1,它类似于列表框控件,但可以在文本框内输入。在设置简单组合框时,需要将组合框选中,按住边界点向下拉伸,出现图示效果。
第三个组合框控件的style属性值为2,它不准用户输入,其余特性与Style属性值为0的组合框情况相同。
(2)Text属性:文本属性,为字符串类型
该属性值是用户所选择项目的文本或直接从编辑区输入的文本,即直接显示在文本中的内容。注意:组合框控件不支持多选。
2.组合框控件的常用事件
(1)Click事件
用户在组合框控件的列表部分选择表项的同时触发Click事件,此时ListIndex属性值就是组合框中所选表项的索引。
(2)KeyPress事件
对于Style属性值为0或1的组合框控件,KeyPress事件可以用于修改或添加列表部分的表项:该事件由在其文本框中按任何键触发,但在组合框中一般应在按回车键(ASCII码为13)时执行修改或添加表项的操作。
下列Combo1控件的KeyPress事件过程可在文本框内新表项的输入结束(以回车键为标志)后向组合框添加该表项:
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Combo1.AddItem Combo1.Text
End Sub
3.组合框控件的常用方法
组合框控件的常用方法同列表框控件的基本一致,主要有添加表项的方法AddItem、删除表项的方法RemoveItem和清除表项的方法Clear等。
4.组合框中列表项数据的排序
要对组合框和列表框中的列表项数据进行排序,我们都可以利用它们的List属性,将列表项数据看成数组的形式进行排序。具体排序格式如下:
For i = 0 To Combo1.ListCount – 2 '表项数据的索引号从0开始
For j = i + 1 To Combo1.ListCount - 1
If Combo1.List(i) > Combo1.List(j) Then '由小到大排序
t = Combo1.List(i): Combo1.List(i) = Combo1.List(j)
Combo1.List(j) = t
End If
Next j, i
例8.9 设计一个字体设置程序完成如下功能:要求分别单击三个组合列表框的列表项时,都能实现对标签控件Label1字体的设置。具体要求如下:
(1)将标签Label1的标题设置为“程序设计”,将Label1的对齐方式设置为居中对齐,字号为12号,大小随文字字体大小自动改变。
(2)程序启动后,组合列表框Combo1的文本框显示为宋体,组合列表框Combo2的文本框显示为常规,组合列表框Combo3的文本框显示为12。对Combo1、Combo2 Combo3的相关属性做合理设置。
具体操作如下:
1)界面设计,如图8.16所示。

图8.16 组合框例题
各控件的属性设置如表8-8:
表8-8 属性设置
对象 属性 设计时属性值 说明
Form1 Caption 字体设置
Label1. Caption 程序设计
Label1 Alignment 2 居中显示
Label1 FontSize 12
Label1 AutoSize True
Label2 Caption 选择字体
Label3 Caption 选择字形
Label4 Caption 选择字号
Combo1、Combo2、Combo3 Style 2 下拉式列表框
2) 具体程序代码如下:
Private Sub Form_Load() ' 添加表项内容
Combo1.AddItem "宋体"
Combo1.AddItem "楷体_GB2312"
Combo1.AddItem "黑体"
Combo2.AddItem "常规"
Combo2.AddItem "斜体"
Combo2.AddItem "粗体"
Combo2.AddItem "粗体斜体"
For i = 4 To 72 Step 4
Combo3.AddItem i
Next i
Combo1.Text = "宋体"
Combo2.Text = "常规"
Combo3.Text = 12
End Sub
Private Sub Combo1_Click()
Label1.FontName = Combo1.Text '将选中的字体直接赋值给Label1
End Sub
Private Sub Combo2_Click()
Select Case Combo2.ListIndex '判断选中的是哪一个字型
Case 0
Label1.FontItalic = False
Label1.FontBold = False
Case 1
Label1.FontItalic = True
Label1.FontBold = False
Case 2
Label1.FontBold = True
Label1.FontItalic = False
Case 3
Label1.FontItalic = True
Label1.FontBold = True
End Select
End Sub
Private Sub Combo3_Click()
Label1.FontSize = Combo3.List(Combo3.ListIndex) '选择字体大小
End Sub
« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。