1、国家二级 VB 机试(多重窗体与环境应用、键盘与鼠标事件过程)模拟试卷 1 及答案解析(总分:64.00,做题时间:90 分钟)一、选择题(总题数:32,分数:64.00)1.设工程文件包含两个窗体文件 Form1frm、Form2frm 及一个标准模块文件 Modulelbas。两个窗体上分别只有一个名称为 Command1 的命令按钮。 Form1 的代码如下: Form2 的代码如下: Public x As Integer Private Sub Command1_Click() Private Sub Form_Load() Print Form1x,y x=1:y=5 End Su
2、b End Sub Modulel 的代码如下: Private Sub Command1_Click() Public y As Integer Form2Show End Sub 运行以上程序,单击 Form1 的命令按钮 Command1,则显示 Form2;再单击 Form2 上的命令按钮 Command1,则窗体上显示的是(分数:2.00)A.1 5B.0 5C.0 0D.程序有错2.以下叙述中错误的是(分数:2.00)A.Sub Main 是定义在标准模块中的特定过程B.一个工程中只能有一个 Sub Main 过程C.Sub Main 过程不能有返回值D.当工程中含有 Sub Ma
3、in 过程时,工程执行时一定最先执行该过程3.Visual Basic 中的“启动对象”是指启动 Visual Basic 应用程序时,被自动加载并首先执行的对象。下列关于 Visual Basic“启动对象”的描述中,错误的是(分数:2.00)A.“启动对象”可以是指定的标准模块B.“启动对象”可以是指定的窗体C.“启动对象”可以是 Sub Main 过程D.若没有经过设置,则默认的“启动对象”是第一个被创建的窗体4.以下关于 VB 文件的叙述中,正确的是(分数:2.00)A.标准模块文件的扩展名是frmB.VB 应用程序可以被编译为exe 文件C.一个工程文件只能含有一个标准模块文件D.类
4、模块文件的扩展名为bas5.如果把程序的启动对象设置为:Sub Main,则 Sub Main 过程(分数:2.00)A.只能写在 Form1 窗体中代码的最前面B.可以写在 Form1 窗体中代码的任何位置C.只能写在某个标准模块的代码中D.可以写在任何窗体或标准模块的代码中6.以下叙述中,错误的是(分数:2.00)A.标准模块不属于任何一个窗体B.工程文件的扩展名为vbgC.窗体文件的扩展名为frmD.一个应用程序可以有多个窗体7.以下关于键盘事件的叙述中,错误的是(分数:2.00)A.按下键盘按键既能触发 KeyPress 事件,也能触发 KeyDown 事件B.KeyDown、KevU
5、P 事件过程中,大、小写字母被视作相同的字符C.KeyDown、KeyUp 事件能够识别 Shift、Alt、Ctrl 等键D.KeyCode 是 KeyPress 事件的参数8.以下可以判断是否在文本框(名称为 Text1)内按下了回车键的事件过程是(分数:2.00)A.Text1_ChangeB.Text1_ClickC.Text1_KeyPressD.Text1_GotFocus9.以下说法中正确的是(分数:2.00)A.当焦点在某个控件上时,按下一个字母键,就会执行该控件的 KeyPress 事件过程B.因为窗体不接受焦点,所以窗体不存在自己的 KeyPress 事件过程C.若按下的键
6、相同,KeyPress 事件过程中的 KeyAscii 参数与 KeyDown 事件过程中的 KeyCode 参数的值也相同D.在 KeyPress 事件过程中,KeyAscii 参数可以省略10.向文本框中输入字符时,下面能够被触发的事件是(分数:2.00)A.GotFocusB.KeyPressC.ClickD.MouseDown11.关于 KeyPress 事件,以下叙述中正确的是(分数:2.00)A.在控件数组的控件上按键盘键,不能触发 KeyPress 事件B.按下键盘上任一个键时,都能触发 KeyPress 事件C.按字母键时,拥有焦点的控件的 KeyPress 事件会被触发D.窗
7、体没有 KeyPress 事件12.下列事件的事件过程中,参数是输入字符 ASCII 码的是(分数:2.00)A.KeyDown 事件B.KeyUp 事件C.KeyPress 事件D.Change 事件13.文本框 Text1 的 KeyDown 事件过程如下:Private Sub Text1_KeyDown(KeyCode As Integer,Shift As Integer)End Sub 其中参数 KeyCode 的值表示的是发生此事件时(分数:2.00)A.是否按下了 Alt 键或 Ctrl 键B.按下的是哪个数字键C.所按的键盘键的键码D.按下的是哪个鼠标键14.VB 中有 3
8、个键盘事件:KeyPress、KeyDown、KeyUp,若光标在 Text1 文本框中,则每输入一个字母(分数:2.00)A.这 3 个事件都会触发B.只触发 KeyPress 事件C.只触发 KeyDown、KeyUp 事件D.不触发其中任何一个事件15.在窗体上画一个命令按钮和一个文本框(名称分别为 Command1 和 Text1),并把窗体的 KeyPreview 属性设置为 True,然后编写如下代码: Dim SaveAll As String Private Sub Form_KeyPress(KeyAscii_ Private Sub Form_Load() As Integ
9、er) Text1Text=“:Text1SetFocus SaveAll=SaveAll+Chr(KeyAscii) End Sub End Sub Private Sub Command1_Click() Text1:Text=LCase(SaveAtl)+SaveAlt End Sub 程序运行后,直接用键盘输入:VB,再单击命令按钮,则文本框中显示的内容为(分数:2.00)A.vbVBB.不显示任何信息C.VBD.出错16.窗体上有一个 Text1 文本框,并编写了下面事件过程: Private Sub Text1_KeyPress(KeyAscii As Integer) KeyAs
10、cii=KeyAscii+3 End Sub 程序运行时,在文本框中输入字符“A”,则在文本框中实际显示的是(分数:2.00)A.AB.BC.CD.D17.对于文本框 Text1,能够获得按键的 ASCII 码值的事件过程是(分数:2.00)A.Text1_KeyUpB.Text1_KeyPressC.Text1_ClickD.Text1_Change18.将窗体的 KeyPreview 属性设为 True,然后编写如下程序: Private Sub Form_KeyDown(KeyCode_ Private Sub Form_KeyPress(KeyAscii As Integer,Shif
11、t As Integer) As Integer) Print Chr(KeyCode) Print Chr(KeyAsci i) End Sub End Sub 运行程序时,按下字母键 a,则窗体上显示的是(分数:2.00)A.A AB.A aC.a AD.a a19.在窗体上画 1 名为 Command1 的命令按钮和 1 名 Text1 的文本框,再编写如下程序: Dim ss As String Private Sub Command1_Click() Private Sub Text1_KeyPress(KeyAscii_ Dim m As String,i As Integer A
12、s Integer) For i=Len(ss)To 1 Step_1 If Chr(KeyAscii)“Then m=m+Mid(ss,i,1) ss=ss+Chr(KeyAscii) Next End Sub Text1Text=UCase(m) End Sub 程序运行后,在文本框中输入“Number 100”,并单击命令按钮,则文本框中显示的是(分数:2.00)A.NUMBER 100B.REBMUNC.REBMUN 100D.001 REBMUN20.窗体上有 1 个名称为 Text1、内容为空的文本框。编写如下事件过程: Private Sub Text1_KeyUp(KeyCod
13、e As Integer,Shift As Integer) Print Text1Text; End Sub 运行程序,并在文本框中输入“123”,则在窗体上的输出结果为(分数:2.00)A.123B.112C.12123D.11212321.设窗体上有 2 个文本框 Text1 和 Text2,并有下面的事件过程: Dim n Private Sub Text1_KeyPress(KeyAscii As Integer) If“A“Then m=m+Mid(ss,i,1) ss=ss+Chr(KeyAscii) Next End Sub Text1Text=UCase(m) End Sub
14、 程序运行后,在文本框中输入“Number 100”,并单击命令按钮,则文本框中显示的是(分数:2.00)A.NUMBER 100B.REBMUNC.REBMUN 100D.001 REBMUN 解析:解析:KeyPress(KeyAscii As Integer)事件是在对象具有焦点时,按下键盘上的键触发的,KeyPress(KeyAscii As Integer)事件中 KeyAscii 参数是所按键的 ASCII 代码,该参数不显示键盘的物理状态,而只是传递一个字符代码。KeyPress 将每个字符的大、小写形式作为不同的键代码解释,即作为两种不同的字符。Chr()可返回 ASCII 码
15、对应的字符。 本题程序运行后,在文本框中每输入一个字符,将执行 Text1_KeyPress 事件过程,变量 ss 的值也随即变化,当输入“Number100”后,变量ss=“Number100“。单击命令按钮后,执行 Command1_Click 事件过程,将字符串“Numberl00”中的字符逆序排列并以大写形式显示在文本框中,即“001 REBMIJN”。20.窗体上有 1 个名称为 Text1、内容为空的文本框。编写如下事件过程: Private Sub Text1_KeyUp(KeyCode As Integer,Shift As Integer) Print Text1Text;
16、End Sub 运行程序,并在文本框中输入“123”,则在窗体上的输出结果为(分数:2.00)A.123B.112C.12123D.112123 解析:解析:当对象具有焦点时,释放键盘上某个按下的键时将触发该对象的 KeyUp 事件,所以每在文本框中按键一次就会触发一次该事件,第一次输出 l,第二次输出 12,第三次输出 123。21.设窗体上有 2 个文本框 Text1 和 Text2,并有下面的事件过程: Dim n Private Sub Text1_KeyPress(KeyAscii As Integer) If“A“=Chr(KeyAscii)And Chr(KeyAscii)=“Z
17、“Then n=n+1 End If IfKeyAscii=13 Then Text2Text=n End Sub 程序运行时,在文本框 Text1 中输入“Visual Basic 60”并按回车键后,在文本框 Text2 中显示的是(分数:2.00)A.2 B.9C.13D.16解析:解析:KeyPress(KeyAscii As Integer)事件是在对象具有焦点时,按下键盘上的键触发的,KeyPress(KeyAscii As Integer)事件中 KeyAscii 参数是所按键的 ASCII 代码,该参数不显示键盘的物理状态,而只是传递一个字符代码。KeyPress 将每个字符的
18、大、小写形式作为不同的键代码解释,即作为两种不同的字符。在本题中 n 的值是文本框中大写字母的个数。22.若看到程序中有以下事件过程,则可以肯定的是,当程序运行时 Private Sub Click_MouseDown(Button As Integer,_Shift As Integer,X As Single,Y As Single) Print“VB Program“ End Sub(分数:2.00)A.用鼠标左键单击名称为“Command1”的命令按钮时,执行此过程B.用鼠标左键单击名称为“MouseDown”的命令按钮时,执行此过程C.用鼠标右键单击名称为“MouseDown”的控件
19、时,执行此过程D.用鼠标左键或右键单击名称为“Click”的控件时,执行此过程 解析:解析:鼠标按下事件(MouseDown)适用于窗体和大多数控件,包括复选框、命令按钮、单选按钮、框架、文本框、目录框、文件框、图像框、图片框、标签、列表框等。事件过程名格式为:控件名事件名,故本题 Privme Sub Click MouseDown 中的 Click 应为控件名。23.设有窗体的 Form MouseMove 事件过程如下: Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Singl
20、e) If(ButtonAnd 3)=3 Then Print“检查按键“ End If End Sub 关于上述过程,以下叙述中正确的是(分数:2.00)A.按下鼠标左键时,在窗体上显示“检查按键”B.按下鼠标右键时,在窗体上显示“检查按键”C.同时按下鼠标左、右键时,在窗体上显示“检查按键” D.不论做何种操作,窗体上都不会显示解析:解析:鼠标事件的 Button 参数用以表示被按下的鼠标键,可以取 3 个值,按下左键取值为 1,按下右键取值为 2,按下中键取值为 4,若同时按下多个键,则取值为多个键值之和。24.要求当鼠标在图片框 P1 中移动时,立即在图片框中显示鼠标的位置坐标。下面能
21、正确实现上述功能的事件过程是(分数:2.00)A.Private Sub P 1 一 MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single) Print X,Y End SubB.Private Sub P1_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single) PicturePrint X,Y End SubC.Private Sub P1_MouseMove(Button As Imeger,Shift As Intege
22、r,X As Single,Y As Single) P1Print X,Y End Sub D.Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single) P1Print X,Y End Sub解析:解析:在图片框中移动鼠标触发的事件是 P1_MouseMove 事件,在事件中控制在图片框中输出坐标。25.窗体的 MouseUp 事件过程如下: Private Sub Form_MouseUp(Button As Integer,Shift As Integer,X As Sin
23、gle,Y As Single) End Sub 关于以上定义,以下叙述中错误的是(分数:2.00)A.根据 Shift 参数,能够确定使用转换键的情况B.根据 X、Y 参数可以确定触发此事件时鼠标的位置C.Button 参数的值是在 MouseUp 事件发生时,系统自动产生的D.MouseUp 是鼠标向上移动时触发的事件 解析:解析:鼠标状态事件又分为按下事件(MouseDown)、移动事件(MouseMove)和弹起事件(MouseUp),这三个事件具有相同的参数。Button 参数的值是在 MouserJp 事件发生时,系统自动产生的,代表按下的是那个鼠标键;Shift 参数确定使用转换
24、键的情况;X、Y 参数可以确定触发此事件时鼠标的位置。26.命令按钮 Command1 的 MouseUp 事件过程结构如下: Private Sub Command1_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single) End Sub 则以下叙述中错误的是(分数:2.00)A.X、Y 参数表示的是 Command1 左上角在窗体中的位置 B.Button 参数用于确定按下的鼠标键C.Shift 参数用于确定是否按下了 Alt、Ctrl 或 Shift 键D.MouseUp 表示抬起鼠标按键时触发的事件解析:解
25、析:鼠标状态事件又分为按下事件(MouseDown)、移动事件(MouseMove)和弹起事件(MouselJp),这三个事件具有相同的参数。Button 参数的值是在 MouserJD 事件发生时,系统自动产生的,代表按下的是那个鼠标键;Shift 参数确定使用转换键的情况;X、Y 参数可以确定触发此事件时鼠标的位置。27.有下面事件过程: Private Sub Form_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single) If Button=2 Then Form1PSet(X,Y)PSet 方法可以
26、在 X,Y 处画一个点 End If End Sub 程序运行后,产生的效果是(分数:2.00)A.在窗体上每单击鼠标左键一次,就在鼠标位置处画一个点B.按着鼠标左键,移动鼠标,可在窗体上画出鼠标的运动轨迹C.按着鼠标右键,移动鼠标,可在窗体上画出鼠标的运动轨迹 D.不按任何鼠标键,移动鼠标,可在窗体上画出鼠标的运动轨迹解析:解析:鼠标事件分点击事件和状态事件:点击事件有单击(Click)和双击(DblClick),不区分左右键;状态事件有按下(MouseDown)、移动(MouseMove)和弹起(MouseUp),能够区分出鼠标的左、右和中间键。如果鼠标按钮是当其指针在窗体或控件之上时被按
27、下并释放,则该对象将“捕获”鼠标并接收全部与该对象相关的鼠标事件。在本题代码中当鼠标移动时触发 MouseMove 事件,此时判断按下的鼠标键为右键(Button=2)时,则在窗体鼠标指针经过的位置依次画点,从而形成一条线。28.窗体上已有 1 个名称为 Picturel 的图片框,要求实现下面 2 个功能之一:(1)在窗体上移动鼠标时,立即将 Picturel 显示在鼠标位置(2)在窗体上单击鼠标时,立即将 Picturel 显示在鼠标位置下面不能实现上述任何功能的事件过程是(分数:2.00)A.Private Sub Form_MouseDown(Button As Integer,Shi
28、ft As Integer,X As Single,Y As Single) PicturelMove X,Y End SubB.Private Sub Form_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single) PicturelMove X,Y End SubC.Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single) Picture 1CurrentX=X:Picture 1CurrentY
29、=Y End Sub D.Private Sub Form MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single) PicturelMove X,Y End Sub解析:解析:图片框的 CurrentX 和 CurrentY 属性会在程序运行时,返回或设置下一次打印或绘图位置的水平坐标和垂直坐标。Move 方法用于移动窗体或控件,其语法:对象名Move LeftTop】,WidthHeight。其中,Left 和 Top 参数分别表示对象左侧的水平坐标和上侧的垂直坐标,Width 和 Height 参数分别表示
30、对象新的宽度和高度。29.编写如下程序: Private Sub Form_Click() Print“Welcome!“ End Sub Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single) Print“欢迎!“ End Sub Private Sub Form_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single) Print“热烈欢迎!“ End Sub 程序运行后,单击窗体,输出结果为(分
31、数:2.00)A.欢迎!热烈欢迎!Welcome! B.欢迎!Welcome!热烈欢迎!C.Welcome!欢迎!热烈欢迎!D.Welcome!热烈欢迎!欢迎!解析:解析:鼠标事件分点击事件和状态事件:其中,点击事件有单击事件(Click)和双击事件(DblClick),这两个事件不区分左键和右键;状态事件又分为按下事件(MouseDown)、移动事件(MouseMove)和弹起事件(MouseUp),这 3 个事件能够区分出鼠标的左键、右键和中间键。当在控件和窗体上单击鼠标左键的时候,首先触发按下事件,然后触发单击事件,最后触发弹起事件。30.下列操作说明中,错误的是(分数:2.00)A.在
32、具有焦点的对象上进行一次按下字母键操作,会引发 KeyPress 事件B.可以通过 MousePointer 属性设置鼠标光标的形状C.不可以在属性窗口设置 MousePointer 属性 D.可以在程序代码中设置 MousePointer 属性解析:解析:在具有焦点的对象上进行一次按下字母键操作,会引发 KeyPress 事件。MousePointer 属性用于设置或返回鼠标经过某对象时光标的形状类型,其值可以是 015 之间的任一整数,不同的值代表不同的形状,可以在程序设计时通过属性窗口设置,也可以在程序运行阶段通过代码设置。31.窗体上有 1 个名称为 Text1 的文本框,1 个名称为
33、 Label1 的标签。程序运行后,如果在文本框中输入信息,则立即在标签中显示相同的内容。以下可以实现上述操作的事件过程为(分数:2.00)A.Private Sub Label1_Click() Label1Caption=Text1Text End SubB.Private Sub Label1Change() Label1Caption=Text1Text End SubC.Private Sub Text1_Click() Label1Caption=Text1Text End SubD.Private Sub Text1_Change() Label1Caption=Text1Tex
34、t End Sub 解析:解析:当文本框中文本内容改变时将触发其 Change 事件,要在文本框中输入信息的同时立即在标签中显示相同的内容,需在文本框的 Change 事件过程中执行相关语句。32.鼠标拖放控件要触发两个事件,这两个事件是(分数:2.00)A.DragOver 事件和 DragDrop 事件 B.Drag 事件和 DragDrop 事件C.MouseDown 事件和 KeyDown 事件D.MouseUp 事件和 KeyUp 事件解析:解析:与鼠标拖放有关的事件有 DragDrop 和 DragOver 两个,其中 DragOver 在拖动控件到一个目标控件上释放鼠标键时触发,DragDrop 在拖放过程中触发。