在本章中,我们介绍了命令按钮、标签框、文本框、单选按钮、复选框、框架、列表框、组合框、滚动条以及定时器等10种控件和控件数组的建立方法。
命令按钮控件的标题一般说明按钮的功能,而其功能是由为控件的事件过程所编制的程序代码实现的。命令按钮的常用事件过程为Click,在程序设计中,一般应为此建立一个命令按钮控件并编制相应的事件过程。
标签框主要是用来为界面上其他没有Caption属性的控件做说明,也可以利用标签框作为输出控件,为用户提供程序运行时的提示信息。
用户既可以在文本框内用键盘输入数据,也可以把文本框作为输出控件。但文本框的输入数据要注意与InputBox函数输入的数据不同,文本框的输出数据也要与标签框控件输出的数据不同,前者在程序运行时,可以编辑相关内容,而后者不能获得焦点,不能直接修改内部内容。
单选按钮和复选框提供了两种选择的方式:同处在一个容器中的多个单选按钮只能选择其中的一个;而复选框可以同时选中多个。
框架作为其他控件的容器(图片控件、窗体也是容器),起着分隔容器之间控件的作用,如n个不同框架控件中各有多个单选按钮,可以提供n个、而不是1个选择。此外,在界面设计时,常将一些功能相近的控件置于同一个框架控件中,使得界面更加清晰。
列表框和组合框也是提供选择的控件,但是要注意的是列表框控件可以支持多选,而组合框控件支持直接输入选项内容,却不能多选。
滚动条控件提供了更直观、快捷的向应用程序输入数据的手段,通过设置某些属性,还可以将数据范围限制在一定的范围内。滚动条控件的常用事件是Scroll事件和Change事件,应注意它们的区别:无论用哪种方法改变滚动条控件的Value属性值,都会导致该控件的Change事件过程被调用;而Scroll事件过程在只有在拖动滚动滑块时才被调用。
定时器的唯一事件是Timer事件,每过Interval秒后自动执行一次。
控件的鼠标和键盘事件是另一个比较重要的知识点,请广大读者务必予以重视。
总之,Visual Basic提供给用户的控件十分丰富,其中一部分控件将在本书后面章节进行讨论。学习控件,要掌握一种学习的方法,即从用途、属性、方法和事件四个方面去把握一个控件。另外应注意比较,不同控件具有不完全相同的属性集合,一些属性是所有控件共有的(如Name属性),一些属性则是部分控件所特有的(如时钟控件的Interval属性)。一些属性既可以在属性窗口中设置,又可以在代码中进行修改(如Caption属性)。另一些属性则是只读的,只能在设计阶段进行设置(如Name属性)。不同控件所具有的方法也不完全相同,能够响应的事件以及事件的触发条件也有所区别。以上提到的各个方面,请读者在后续章节的学习中注意总结。
一、判断题
1.用来显示文本框内容的属性是Caption属性。
2.滚动条的Scroll事件在滑块位置改变时即被触发。
3.滚动条控件可作为用户输入数据的一种方法。
4.若在列表框中第三项之后插入一项目“ABC”,则所用语句为List1.AddItem"ABC",3。
5.一个窗体中只能含一组单选按钮。
6.用Cls方法可以清除组合框中的所有表项。
7.列表框控件,只能设置为单选。
8.对象的属性都可以在属性窗口中设置。
9.命令按钮不但能响应单击事件,而且还能响应双击事件。
10.单选框控件和复选框控件都具有Value属性,它们的作用完全一样。
11.移动框架时,框架内的控件也跟着移动,并且框架内的各控件的Top和Left属性值也将分别随之改变。
12.当文本框的Multiline属性为True时,ScrollBars属性才有效。
13.与控件有关的赋值语句一定要放在该控件的事件中。
14.由于定时器控件在运行时是看不见的,因此在设置时可任意地将其放在任何位置。
15.当列表框中表项太多,超出了设计时的长度时,VB会自动给列表框加上垂直滚动条。
16.若文本框的MaxLength属性值为0,则该文本框内不可输入任何字符。
17.若复选框控件的Value属性值为True,则框内显示“√”,若Value属性值为False,则显示空白。
18.当触发滚动条的Scroll事件后,一定会同时触发滚动条的Change事件。
19.如果命令按钮的Defalut属性为True,那么任何时候按Enter键都相当于单击该命令按钮。
20.所有控件都有Name和Caption属性。
二、选择题
1.文本框中选定的内容,由下列 属性来反映。
A.SelText B.SelLength C.Text D.SelStart
2.执行后会删除文本框Text1中文本的语句为____。
A.Text1.Caption=”” B.Text1.Text=””
C.Text1.Clear D.Text1.Cls
3.将数据“宋体”添加到列表框List1中,并使其成为第一项,使用____语句。
A.List1.AddItem "宋体",0 B.List1.AddItem "宋体"
C.List1.AddItem 0,"宋体" D.List1.AddItem "宋体",1
4.复选框对象是否被选中,是由其____属性决定的。
A.Checked B.Enabled C.Value D.Selected
5.组合框中的Style属性值确定了组合框的类型和显示方式,以下选项中不属于组合框Style属性值的是 。
A.下拉式组合框 B.弹出式组合框
C.简单式组合框 D.下拉式列表框
6.不能通过____来删除列表框中的选择项。
A.List属性 B.RemoveItem方法
C.Clear方法 D.Text属性
7.以下不允许用户在程序运行时输入文字的控件是____。
A.标签框 B.文本框
C.下拉式组合框 D.简单组合框
8.滚动条的___属性用于指定用户单击滚动条的滚动箭头时,Value属性值的增、减量。
A.LargeChange B.SmallChange C.Value D.Change
9.执行语句List1.List(List1.ListCount)=“80”语句后____。
A.会产生出错信息 B.List1列表框最后一项被给为“80”
C.List1会增加一个“80”项 D.指定List1列表框的表项个数为80个
10.为使文本框显示滚动条,必须首先设置的属性是____。
A.AutoSize B.Alignment C.Multiline D.ScrollBars
11.设计动画时通常用时钟控件____属性来控制动画速度。
A.Interval B.Timer C.Move D.Enabled
12.将定时器的时间间隔设置为1秒,那么定时器的Interval属性值应为____
A.1000 B.1 C.100 D.10
13.下列哪一个属性用来表示各对象(控件)的位置____。
A.Text B.Caption C.Left D.Name
14.将焦点主动设置到指定的控件或窗体上,应采用____方法。
A.SetData B.SetFoucs C.SetText D.GetData
15.标签框控件和文本框控件内的对齐方式由——____属性决定。
A.Alignmemt B.Multiline
C.AutoSize D.Name
16.在程序运行期间属性值不允许改变的属性是____属性。
A.Caption B.Name C.BackColor D.Enabled
17.OptionButton控件和CheckButton控件都有Value属性,下列叙述正确的是_。
A.都是设置控件是否可用
B.都是设置控件是否可见
C.OptionButton的Value属性是逻辑值,而CheckButton的Value值是数值 D.OptionButton的Value属性是数值,而CheckButton的Value值是逻辑值 18.下列表达式错误的是____。
A.Label1.Visible And Label2.Visible B.Text1.Text + s$ + Text2.Text C.( Label1.Height +Label2.Width )/2 D.Text1.Index +Text1.Visible
19.文本框的ScrollBars属性值为3-Both,但是在文本框中确看不到水平与垂直滚动条,可能的原因是 。
A.文本框的MultiLine属性值为False
B.文本框的MultiLine属性值为True
C.文本框尚未输入内容
D.文本框的Locked属性值为False
20.下列关于添加“控件”的方法正确的是 。
A.单击控件图标,将指针移到窗体上,双击窗体
B.双击工具箱中的控件,即在窗体中央出现该控件
C.单击工具箱中的控件,将指针移到窗体上,再单击
D.用鼠标左键拖动工具箱中的某控件到窗体中适当位置
21.下面有一程序,如果从键盘上输入“Testing”,则在文本框中显示的内容是 。
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii >= 65 And KeyAscii <= 122 Then
KeyAscii = 65
End If
End Sub
A.A B.Testing
C.AAAAAAA D.程序出错
22.文本框Text1和Text2用于接受输入的两个数,求这两个数的乘积,错误的是 。
A.y=Text1.Text * Text2.Text
B.y=Val(Text1.Text) * Val (Text2.Text)
C.y=Str(Text1.Text) * Str(Text2.Text)
D.文本框的Text属性是字符型,所以以上语句都错误。
23.为了在按下Esc键时执行某个命令按钮的Click事件过程,需要把该命令按钮的一个属性设置为True,这个属性是 。
A.Value B.Default C.Cancel D.Enabled
24.假定窗体上有一个标签,名为Label1,为了使该标签透明并且没有边框,则正确的属性设置为 。
A.Label1.BackStyle=0 : Label1.BorderStyle=0
B.Label1.BackStyle=1 : Label1.BorderStyle=1
C.Label1.BackStyle=True : Label1.BorderStyle=True
D.Label1.BackStyle=False : Label1.BorderStyle=False
25.程序运行时,拖动滚动条上的滚动块,则触发的事件是 。
A.Move B.Change C.Scroll D.GetFocus
三、填空题
1.要是标签框(Label)l控件可换行显示并且可自动调节大小,需将其 属性和 属性同时设置为True。
2.大多数控件都可设置其 属性使其有效或无效,可设置其 属性使其可见或不可见。
3.组合框具有 和 两种控件的基本功能。
4.鼠标 的动作,使滚动条的Scroll、Change事件都会发生。
5.执行语句“HScroll1.Value = HScroll1.Value + 100”时,发生 事件。
6.将焦点定位于命令按钮Command1之上的语句为 。
7.定时器控件只能接收 事件。
8.Text文本框能接受的最长字符数由文本框的 属性确定。
9. 方法用来向列表框中加入表项。
10.定时器的Interval属性值为0时,表示 。
四、程序阅读题
1.当程序运行后,在文本框Text1中输入1234,写出窗体上的输出结果。
Private Sub Text1_Change()
Print Text1 & "-"
End Sub
2.下面程序运行后,在文本框Text1中输入6并按回车键后,写出文本框中显示的内容。
Dim N%,M%
Private Sub Text1_Keypress(Keyascii As Integer)
If Isnumeric(Text1) Then '判断是否为数字
Select Case Val(Text1) Mod 2
Case 0
N=N+Val(Text1)
Case 1
M=M+Val(Text1)
End Select
End If
Text1=""
Text1.Setfocus
IF Keyascii=13 Then
Text1=N & M
End If
End Sub
3.如图8.25所示的窗体上有一个列表框和一个文本框,下面程序运行后,在文本框中输入“789”,然后双击列表框中的“463”,写出文本框中的显示结果。
图8.25 窗体
Private Sub Form_Load()
List1.AddItem "453"
List1.AddItem "979"
List1.AddItem "463"
List1.AddItem "122"
List1.AddItem "784"
Text1.Text = ""
End Sub
Private Sub List1_DblClick()
a = List1.Text
Text1= a + Text1.Text
End Sub
4.执行了下面的程序后,写出列表框中各项的数据。
Private Sub Form_Load()
Combo1.AddItem "西瓜": Combo1.AddItem"苹果": Combo1.AddItem "橘子"
Combo1.AddItem "葡萄": Combo1.AddItem "哈密瓜"
Combo1.AddItem "火龙果": Combo1.AddItem "釉子"
Combo1.List(0) = "李子" : Combo1.List(7) = "猕猴桃"
End Sub
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Combo1.List(Combo1.ListCount) = Combo1.Text
List1.Clear
For i% = 0 To Combo1.ListCount - 1
If Len(Trim(Combo1.List(i%))) < 3 Then
List1.AddItem Combo1.List(i%)
End If
Next i%
End Sub
写出程序运行时,在组合框Combo1中输入文本“香蕉”(以回车键结束)后,控件List1中的所有表项。
5.程序代码如下:
Private Sub Form_Load()
Label1.AutoSize = True
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim a As String * 1, b As String, n As Byte
If KeyAscii = 13 Then
b = Text1.Text: n = Len(b)
For i% = 1 To n \ 2
a = Left(b, 1)
b = Right(b, n - 1) + a
Label1.Caption = Label1.Caption + b + Chr(13) + Chr(10)
Next i%
End If
End Sub
请写出在文本框Text1中输入12345(以换行结束)后,标签控件Label1上的显示结果。
6.控件Hscroll1的属性设置如下:
HScroll1.Min = 1
HScroll1.Max = 9
HScroll1.Value = 1
HScroll1.SmallChange = 2
HScroll1.LargeChange = 4
下列程序运行时,4次单击滚动条右端箭头按钮,写出各次单击时,Text1上的显示结果。
Dim y As Single
Private Function f1(x2 As Integer) As Single
Static x1 As Integer
f1 = 0
For i% = x1 To x2
f1 = f1 + i%
Next i%
x1 = i%
End Function
Private Sub HScroll1_Change()
y = y + f1(HScroll1.Value)
Text1.Text = y
End Sub
7.执行下列程序,按下回车键后的输出结果。
Option Base 1
Private Sub Form_KeyPress(KeyAscii As Integer)
Dim x As Integer, y As Integer
a = Array(3, 6, 8, 4, 1, 7) 'a数组中的元素分别为3,6,8,4,1,7
x = a(1)
y = a(1)
If KeyAscii = 13 Then
For i = 2 To 6
If a(i) > x Then
x = a(i)
y = i
End If
Next i
End If
Print x; y
End Sub
五、程序填空题
1.本题是利用计时器控件来实现文字的水平移动。要求:如图8.26所示,运行时标签框内的文字从窗体左边向右边移动,当标签框的最左边超出窗体的右边界时,从窗体的左边进入窗体(尾部先进入),并要求在文字移动时,文字颜色随时间任意变化。
图8.26 标签框移动
代码如下:
Private Sub Form_Load()
Form1.WindowState = 2 : Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
Label1.ForeColor = RGB(255 * Rnd, 255 * Rnd, 255 * Rnd)
⑴ = Label1.Left + 150
If Label1.Left >= Form1.Width Then
Label1.Left = ⑵
End If
End Sub
Private Sub Command1_Click()
End
End Sub
2.下面是一个添加和删除程序,程序运行界面如图8.27所示,单击“添加”按钮(Command1)将文本框(Text1)中的内容加到列表框(List1)中的第一项,如果文本框中没有内容,则给出提示“没有内容,不予添加”。单击“删除”按钮(Command2)则将所有选中表项删除。如果没有选择要删除的表项,则给出提示“请选择删除的项目”。
图8.27 添加和删除程序
Private Sub Form_Load()
Form1.Caption = "添加与删除"
Text1.Text = ""
List1.AddItem "Word"
List1.AddItem "Excel"
List1.AddItem "PowerPoint"
List1.AddItem "Outlook"
End Sub
Private Sub Command2_Click()
If ⑴ Then
MsgBox ("请选择删除的项目")
Else
⑵
End If
End Sub
Private Sub Command1_Click()
If ⑶ Then
MsgBox ("没有内容,不予添加")
Else
⑷
Text1.Text = ""
End If
End Sub
3.窗体上有两个命令按钮:Command1(显示)和Command2(退出)。下列程序运行时,“显示”按钮能响应,“退出”按钮不能响应;单击“显示”按钮后,在窗体上显示一个用字符“*”组成的5层的金字塔,同时“显示”按钮不能响应,“退出”按钮能响应。
Private Sub Command1 Click()
Dim i As Integer, j As Integer
For i = 1 To 5
Print Spc(5 - i);
For j = ⑴ : Print "*"; : Next j
Print
Next i
Command1.Enabled = False : ⑵
End Sub
Private Sub Command2 Click()
End
End Sub
Private Sub Form Load()
Command1.Enabled = True
⑶
End Sub
4.下面的程序段是检查输入的算术表达式中圆括号是否配对,并显示相应的结果。本程序在文本框中输入表达式,边输入边统计,以输入回车作为表达式输入结束,然后显示结果。
Dim Count1%
Private Sub Text1_Keypress(Keyascii As Intcger)
If ⑴ ="(" Then
Count1 =Count1+1
Elself ⑵ Then
⑶
End If
If Keyascii=13 Then
If ⑷ Then
Print "左右括号配对"
Elseif ⑸ Then
Print "左括号多于右括号"; Count1; "个"
Else
Print "右括号多于左括号"; -Count1; "个"
End If
End If
End Sub
5.利用1个定时器、1个标签和2个命令按钮制作一个动态秒表。
要求各控件名称取缺省值,控件Command1、Command2标题分别为“开始”、“结束”。运行时,单击“开始”按钮后秒表开始计时,并在标签上显示总秒数;单击“结束”按钮后,计时结束,在窗体上显示出运行的时间(折算成小时、分钟和秒数)。
Dim x As Long
Private Sub Form_Load()
Timer1.Interval = 1000: Timer1.Enabled = False
End Sub
Private Sub Command1_Click()
Cls
x = 0
⑴
End Sub
Private Sub Command2_Click()
Dim h As Integer, m As Integer, s As Integer
Timer1.Enabled = False
h = ⑵
m = ⑶
s = x Mod 3600 Mod 60
Print "运行了" + Str(h) + "小时" + Str(m) + "分" + Str(s) + "秒"
End Sub
Private Sub Timer1_Timer()
⑷
Label1.Caption = x
End Sub
6.下列程序段将十进制数转会为十六进制数。单击窗体弹出InputBox对话框,让用户输入一个十进制数;单击“确定”按钮后,在Label1上显示出十六进制数的结果。如果输入的不是十进制数,在Label1上显示出“你输入的不是十进制数,退回窗体状态,让用户继续输入。
Private Sub Form_Click()
Dim shex As String, ndec As Integer, ys As Integer, ai As String
ndec = Val(InputBox("请输入一个十进制数"))
while ⑴
ys= ⑵
Select Case ys
Case 10
ai = "A"
Case 11
ai = "B"
Case 12
ai = "C"
Case 13
ai = "D"
Case 14
ai = "E"
Case 15
ai = "F"
Case 0 To 9
⑶
Case Else
label1 = "你输入的不是十进制数"
⑷
End Select
shex= ⑸
ndec = ndec \ 16
Wend
label1= ⑹
End Sub
7.本程序用于处理文本框Text1.Text中的内容,假设文本框中有偶数个字符。要求:将文本框中的内容从头尾至中间依次各取字符,组成一个新的字符串Str2,并在窗体上输出。
例如:
Text1.Text = "12345678",则 Str2 = "18273645"
Private Sub Form_Click()
Dim Str1 As String, Str2 As String
Str1 = Text1.Text
Str2 = ""
m = 0
Do ⑴
Str2 = Str2 + ⑵
Str2 = Str2 + ⑶
m = m + 1
Loop
Form1.Print Str2
End Sub
六、程序设计题
1.窗体上设计两个文本框和两个标签框,标签上显示“摄氏温度”和“华氏温度”,文本框一个用于输入摄氏温度(文本框只接收数字字符和小数点“.”字符),另一个用于输出对应的华氏温度。摄氏温度c与华氏温度f的转换公式为c=(5/9)*(f-32)。
提示:本题可以用文本框的KeyPress事件来判断输入的字符是否为数字字符或小数点“.”。
2.编写一个能对列表框进行项目添加、修改和删除操作的应用程序,如图8.28所示。“添加”按钮的功能是将文本框中的内容添加到列表框中,“删除”按钮可删除列表框中选定的项目,“修改”按钮,可把要修改的项目显示在文本框中,当在文本框修改好后再单击“修改确定”按钮则更新列表框中的内容。当按下“修改”按钮后,“修改确定”按钮才可选取,否则不可操作。
图 8.28 列表框应用程序
3.编程,窗体标题为“猜数游戏”。
基本要求:单击“出题”按钮则生成一个1到100间的随机整数;然后在文本框中输入若干数(以回车键结束),大于或小于随机数则给出提示信息,猜1个数超过10次不可再猜该数。猜中了,提示“恭喜你,猜中了字样”。
4.在窗体上有两个命令按钮和一个文本框,标题属性分别为“开始”、“结束”和Text1。文本框Text1中的字符数不超过200个。程序刚开始运行时,“结束”按钮成灰色,单击“开始”按钮后,将文本框中的字符按其ASCII码的值由小到大自左至右重新组合,并在窗体上输出重组后的字符串,同时使“结束”按钮响应而“开始”按钮不能响应。
5.通讯录程序设计,程序启动后界面如图8.29所示:
(1)当用户在文本框内输入完一个同学的记录后,单击“添加“按钮,则记录字段加到各数组和组合框的List集内。
(2)当在下拉式组合框中选取一个表项后,则与该表项相应的记录便自动显示在窗体右边的文本框内。
(3)当在下拉式组合框中选取一个表项后,单击“删除“按钮,与表项相应的记录便被删除。
图8.29 第5题界面设计
6.编写一个如图8.30所示的复选框和单选按钮控制的字体变化效果。
图8.30 复选框和单选按钮
7.统计输入信息有多少个英文大写字母、小写字母、数字字符。界面如图8.31所示。在Text1中输入信息,单击“确定”按钮后,分别在Text2、Text3、Text4中显示大写字母、小写字母和数字字符的个数。
图8.31 统计字符个数
8.已知在List1和List2中分别有n个随机产生的两位正整数(通过Load事件实现),现将List1和List2中的数全部移到List3中,并在List3中按照由小到大的顺序进行输出。
9.用户界面如下图所示,用于显示左右两个组合框中数据的左移和右移功能。程序开始运行时,在左边组合框中随机生成10个由小到大排列的三位正整数(已知组合框1的Sorted属性已设置为True),现要求完成:
(1)单击“>>”按钮,左边组合框中的10个数全部移到右边组合框,并由大到小排列,同时使“<<”按钮能响应,“>>”按钮不能响应;
(2)单击“<<”按钮,右边组合框中的10个数全部移到左边组合框,并由小到大排列,同时使“>>”按钮能响应,“<<”按钮不能响应;
(3)单击“结束按钮”,结束程序运行。
已知各控件的Caption属性已经在属性窗口中设置完成。
图8.32 组合框
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。