内容正文:
项目8 Visual Basic常用内部控件
项目导入
控件是组成程序外部表象的基本元素,通过合理整齐地布置控件,可以方便地使用程序,使程序的易用性大大提高。
项目8通过4个任务介绍 Visual Basic 工具箱中提供的另外一组常用控件,这些控件有单选按钮、复选框、框架、列表框、组合框、图像框、图片框和计时器,介绍每类控件的常用属性、事件和方法。
2
项目目标
掌握单选按钮、复选框、框架、图像框、图片框,以及计时器等控件的常用属性和使用方法。
3
任务2 列表框和组合框
4
任务目标
掌握列表框、组合框的常用属性和方法。
任务实施
列表框控件的名称的默认值为List1、List2、…,列表框的作用是提供选项进行选择。
组合框是文本框和列表框的组合控件,它可以接收程序运行过程中的数据,既可以和文本框一样输入数据,又可以在组合框的已有选项中进行选择,因此它也同时具有文本框和列表框的大部分属性和事件。
5
列表框没有 Caption 属性。
它不具备编辑功能,程序运行后用户不能脱离代码而改变列表框项目的内容,只能选择项目。
1.列表框(ListBox)
(1)列表框的常用属性、类型及其说明见表8-4。
属 性 类 型 说 明
List 字符串数组 该属性用来列出项目内容,可以通过下标访问列表框的内容(下标值从0到ListCount-1),格式s$=[列表框.]List(下标值),例如,执行“s$=List1.List(3)”语句,将列出列表框List1的第4项内容
ListCount 数值型 该属性值为控件列表部分项目的个数,由于索引值从 0 开始计数,所以 ListCount -1 是最后一个项目的Index
ListIndex 数值型 该属性值为被选中项目的索引号。列表框第1项的ListIndex值为0;最后一项的ListIndex值为ListCount-1;如果没有选择项目,ListIndex的值为-1。此外,该属性只能在程序中设置或引用
Selected 布尔型 该属性表示列表框中的项目是否被选中。各项的取值为True或False。例如, Selected(1)=True表示第2项被选中。此外,该属性只能在程序中设置或引用
Text 字符型 该属性用来返回当前选中的项目内容。对于单选的列表框控件List1,字符串 List1.list(List1.ListIndex)与 List1.Text 相等,都是被选中项目的文本
Sorted 布尔型 该属性指定控件中的项目是否自动按字母顺序排列,True表示列表中的项目按字母顺序排列;False为默认值,列表框的项目不按字母顺序排列,而是按添加的先后次序排列
MultiSelect 数值型 利用列表框控件的该属性,可以为列表框设置“单选”或“允许多选”属性;值为0:只能单选(默认值);值为1:可以多选,被选中的项目都被突出显示;值为2:扩展多选
6
(2)列表框的常用方法。
① AddItem方法。
格式:
<列表框>.AddItem <项目字符串>[,索引号]
功能:
AddItem方法用于将项目添加到 ListBox 控件中。
说明:
索引号可以指定项目的插入位置,如果省略索引号,项目自动加到列表框末尾。
7
如下列 Form_Load 事件可在装入窗体时,为列表框控件 List1 添加若干项目。
Private Sub Form_Load()
List1.AddItem"苹果"
List1.AddItem"桔子"
List1.AddItem"香蕉"
List1.AddItem"木瓜"
List1.AddItem"火龙果"
List1.AddItem"榴莲"
End Sub
8
列表框控件的项目也可以在设计时添加。
其方法为:
在属性窗口内选中List属性,在下拉框中添加项目,用Ctrl+Enter组合键换行。
运行时也可以用赋值语句在列表框控件中添加或修改项目:
列表框.List(List1.ListIndex)=项目文本
9
(2)列表框的常用方法
② Clear方法。
格式:
<列表框>.Clear
功能:
用于清空列表框控件中的所有表项。
10
(2)列表框的常用方法
③ RemoveItem方法。
格式:
<列表框>. RemoveItem <索引值>
功能:
用于删除列表框中指定的表项。
例如:
List1.RemoveItem 2 删除列表框的第3项
11
(3)列表框的常用事件。
列表框的常用事件有以下两个。
① Click 单击事件。
运行时单击列表框控件的某一表项,可以使该表项在未选状态和选中状态之间切换,同时触发该列表框控件的 Click 事件。
② DbClick 双击事件。
双击,可直接运行项目所对应的事件。
12
【例8.4】 本程序运行时,左右两边列表框的单个选项可以互相换位,也可以一次把所有的选项切换到另一侧。双击左侧列表框也可以完成右移,双击右侧列表框也可以完成左移。
13
图8-8 程序运行效果
14
(1)设计界面如图8-9所示,设置属性如图8-8所示。
图8-9 用户界面
(2)编写事件代码。
编写窗体Form1的Load事件代码:
Private Sub Form_Load()
List1.AddItem"苹果" ' 为list1 控件添加数据
List1.AddItem"桔子"
List1.AddItem"木瓜"
List1.AddItem"葡萄"
List1.AddItem"西瓜"
List1.AddItem"香蕉"
List1.AddItem"火龙果"
List1.AddItem"菠萝蜜"
End Sub
15
编写“>”命令按钮的Click事件代码:
Private Sub Command1_Click()
' 移动表项至右边的列表框
If List1.ListIndex<0 Then
' 判断是否选择了表项
MsgBox"没有选择!"
Exit Sub
Else
List2.AddItem List1.Text
' 添加选中的表项到右边的列表框中
List1.RemoveItem List1.ListIndex
End If
End Sub
16
编写“<”命令按钮的Click事件代码:
Private Sub Command2_Click()
' 移动表项至左边的列表框
If List2.ListIndex<0 Then
' 判断是否选择了表项
MsgBox "没有选择!"
Exit Sub
Else
List1.AddItem List2.Text
' 添加选中的表项到左边的列表框中
List2.RemoveItem List2.ListIndex ' 删除此表项
End If
End Sub
17
编写“>>”命令按钮的Click事件代码:
Private Sub Command3_Click()
' 将所有表项全部添加到右边的列表框中
Do While List1.ListCount
' 判断是否到达最后一个表项
List2.AddItem List1.List(0)
‘ 每次移动最前面的表项
List1.RemoveItem 0
Loop
End Sub
18
编写“<<”命令按钮的Click事件代码:
Private Sub Command4_Click()
' 将所有表项全部添加到左边的列表框中
Do While List2.ListCount
List1.AddItem List2.List(0)
List2.RemoveItem 0
Loop
End Sub
19
2.组合框
列表框和组合框都可以为用户提供选项列表,用户可以在控件列表项中进行选择,所以在事件和属性方法上有很多相似之处。但二者又有所不同,使用时要根据需要进行选择。
组合框控件的Text属性以及名称的默认值都为Combo1、Combo2、…。
20
(1)组合框的常用属性。
属 性 名 类 型 说 明
List(i) 字符型 列表是一个字符串数组,存放组合框的项目,下标从0开始,List(0)是第一个列表项。该属性值既可在设计状态下设置,也可在程序中设置或引用
ListCount 数值型 其值为组合框项目的总数。该属性只能在程序中引用
ListIndex 数值型 选中的项目的序号,其值从0开始直到ListCount-1. 该属性只能在程序运行时使用,没有项目被选定时为-1
Sorted 布尔型 值为True时,列表框中各列表项自动按字母递增排序,其值为False(默认值)时,按输入的先后次序排列。该属性只能在设计状态下设置
Text 字符型 该属性只能在程序中引用。其值为组合框中被选定的内容,与表达式List(ListIndex)的返回值相同
21
表8-5 组合框和列表框共有的属性
① Style 属性(整数 0、1、2)。
Style属性值 说 明
0 为下拉式组合框,包括一个下拉式列表和一个文本框。可以从列表选择或在文本框中输入
1 为简单组合框,包括一个文本框和一个不能被收起和下拉的列表,可以从列表中选择或在文本框中输入
2 为下拉式列表,这种样式仅允许从下拉式列表中选择
22
该属性决定组合框的样式,是只读属性,只能在设计时设置,其属性值见表8-6。
表8-6 组合框的Style属性值
23
组合框控件 Style 属性不同设置的显示效果如图8-10所示。
图8-10 组合框控件 Style 属性不同设置的显示效果
(2)组合框的常用事件。
① Click 事件。
用户单击组合框控件的列表部分选择表项的同时触发 Click 事件,此时 ListIndex 属性值就是组合框中所选表项的索引。
② KeyPress 事件。
对于 Style 属性值为0 或 1 的组合框控件,KeyPress 事件可以用于修改或添加列表部分的表项。
该事件由在其文本框中按任何键触发,一般应在按回车键(ASCII 码为13)时执行修改或添加表项的操作。
24
下列 Combo1 控件的 KeyPress 事件过程可在文本框内新表项的输入结束(以回车符为标志)后向组合框添加该表项:
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii=13 Then
Combo1.AddItem Combo1.Text
End If
End Sub
25
【例8.5】 设置两个组合框,分别显示运动项目“大球”和“小球”,大球的选项为“足球、篮球、排球”,小球的选项分别为“乒乓球、羽毛球”。
26
程序运行效果如图8-11所示。
窗体载入时,在组合框中添加数据,事件代码为:
Private Sub Form_Load( )
' 为组合框添加数据
Combo1.AddItem"足球"
Combo1.AddItem"篮球"
Combo1.AddItem"排球"
Combo2.AddItem"乒乓球"
Combo2.AddItem"羽毛球"
Label3.AutoSize=True
Label3.Caption=""
End Sub
27
选择组合框Combo1中大球的单击事件代码为
Private Sub Combo1_Click()
Label3.Caption="您喜欢的球类项目是:"+Combo1.Text
End Sub
28
选择组合框Combo2中小球的单击事件代码为
Private Sub Combo2_Click()
If Label3.Caption="" Then '开始就选择小球则提醒先选择大球类
MsgBox "请先选择大球类"
Combo2.Text="" ' 清空 Combo2 的显示
Else
Label3.Caption=Label3.Caption+"和"+Combo2.Text
End If
End Sub
29
在列表框中列出1~100之间能被7整除的数。
30
课堂反馈:
$$