Shift、Ctrl、Alt等键就不能产生Ascii码,所以就不会引发KeyPress事件,而数字、大小写字母等可打印的键盘字符、Enter、BackSpace、Esc和Tab等都可以。
【实例3.6】 编写程序,实现对于用户在文本框中输入的字母,不管大小写,始终以大写显示在文本框中。
打开代码编辑窗口,在其中输入如下代码:
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii >= 97 And KeyAscii <= 122 Then
KeyAscii = KeyAscii – 32
End If
End Sub
程序运行后,在文本框中输入大写字母或小写字母时,显示的都是大写字母,如图3-14所示。

图3-14 程序运行结果
2.鼠标事件
鼠标是目前图形界面平台下应用最广泛的输入控制设备。前面曾经介绍过应用于对象的鼠标的单击和双击事件,其实VB的对象除了能识别这两个鼠标事件外,还能识别鼠标的MouseDown、MouseMove和MouseUp事件。鼠标事件适用于窗体、文本框、命令按钮、选项按钮、复选框、列表框、图片框、标签和框架等对象。
(1)MouseDown和MouseUp事件
格式:
Private Sub对象名_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Private Sub对象名_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
(2)MouseMove事件
格式:
Private Sub 对象名_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
MouseDown、MouseUp与MouseMove事件中的参数都一样,这里统一进行说明:
l Shift、X、Y参数的含义同键盘事件。
l Button参数值是指此时按下或释放了哪个鼠标键,该参数是一个整数。对于MouseMove事件来说,button参数是指所有鼠标按键当前的状态。一个MouseMove事件可指示某些、全部或没有一个按钮被按下。对于MouseDown和MouseUp事件来说,button参数在每个事件精确地指示一个按键,即不能检查两个或三个键同时被按下或松开的情况,因此取值只能是下表中的前三种。参数具体取值如表3-13所示。
表3-13 Button参数取值
|
十进制 |
二进制 |
转换键按下情况 |
|
0 |
000 |
没有按下任何鼠标键 |
|
1 |
001 |
鼠标左键被按下 |
|
2 |
010 |
鼠标右键被按下 |
|
3 |
011 |
鼠标左、右键同时被按下 |
|
4 |
100 |
鼠标中间键被按下 |
|
5 |
101 |
鼠标中间、左键同时被按下 |
|
6 |
110 |
鼠标中间、右键同时被按下 |
|
7 |
111 |
鼠标三键同时被按下 |
l
MouseDown是三种鼠标事件中最常使用的事件。例如,在运行时可用它调整控件在窗体上的位置,也可用它实现某些图形效果。按下鼠标按钮时就可触发此事件。
l MouseMove事件伴随鼠标指针在对象间移动时连续不断地产生。除非有另一个对象捕获了鼠标,否则,当鼠标位置在对象的边界范围内时该对象就能接收MouseMove事件。
【实例3.7】 利用上述鼠标事件,在窗体上绘制图形。
要求:单击鼠标即开始绘制,并根据鼠标移动的位置进行绘制,释放鼠标则停止绘制。打开代码编辑窗口,在其中输入如下代码:
Dim draw As Boolean '设置绘制状态标志
Private Sub Form_Load()
DrawWidth = 15 '设置绘制笔刷的宽度
ForeColor = RGB(0, 0, 255) '设置绘制的颜色
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
draw = True '表示开始下笔绘制
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If draw Then
PSet (X, Y) '根据目前鼠标移动的位置绘制点
End If
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
draw = False '表示停笔
End Sub
程序运行后结果如图3-15所示。

图3-15 程序运行结果
1.Print方法
在VB中,可以使用Print方法实现数据输出。Print方法除了可以在窗体上输入文本字符串或表达式的值外,还可以在其他图形对象或打印机上输出信息。
格式:[对象名.]Print[表达式表]
说明:
(1)如果使用Print方法将数据输出到窗体,应该先使用Show方法,否则输入数据将不会显示出来。
(2)格式中的【对象名】可以是窗体、图片框或打印机。如果省略,则在当前窗体上直接输出。
(3)表达式表是一个或多个表示式,如果是数值表达式,则输出表达式的值;如果是字符串表达式,则按原样输出。输出数据时,数值数据前面有一个符号位,后面有一个空格,而字符串前后都没有空格。
(4)当输出多个表达式时,各表达式之间用分隔符逗号【,】或分号【;】隔开。
l 如果使用逗号分隔符,则各输出项按标准输出格式显示。
l 如果使用分号分隔符,则按紧凑格式输出。
【实例3.8】 用Print方法在窗体输出文本信息。
打开代码编辑窗口,在其中输入如下代码:
Private Sub Form_Click()
Print "3*5-2="; 3 * 5 - 2
Print "好好学习"
Print , "Visual Basic"
Print , , "编程技术"
Print "只要坚持不懈",
Print "你一定能称为VB编程高手"
End Sub
程序运行后,单击窗体的结果如图3-16所示。

图3-16 程序运行结果
2.Tab函数和Spc函数
VB还提供了两个与Print方法有关的函数:Tab和Spc。
(1)Tab函数
在Print方法中,可以使用Tab函数对输出进行定位。
格式:Tab(n);
说明:
l n为数值表达式,其值为一整数。Tab函数把显示或打印位置移到由参数n指定的列数,从此列开始输出数据。要输出的内容放在Tab函数后面,并用分号隔开。
l 当在一个Print方法中有多个Tab函数时,每个Tab函数对应因各输出项,各输出项之间用分号隔开。
(2)Spc函数
在Print方法中,还可以使用Spc函数来对输出进行定位,与Tab函数的区别是:Spc函数提供若干个空格。
格式:Spc(n);
说明:
l n为数值表达式,其值为一整数。表示在显示或打印下一个表示式之前插入的空格数。
l Spc函数与输出项之间用分号隔开。
为了便于和用户交互,VB提供了InputBox和MsgBox两个函数,简化界面设计。其中:
l InputBox(输入框):用来输入信息。
l MsgBox(消息框):用来显示信息。
下面分别进行讲解。
InputBox函数用来接受通过键盘输入的数据,并返回在对话框中输入的信息。在调用InputBox函数时,屏幕上将产生一个带有提示信息的对话框,光标在输入对话框底部的输入文本框中闪烁,等待用户输入数据。按回车键或用鼠标单击【确定】或【OK】按钮,即可把输入文本框中输入的数据以字符串形式赋给变量;按Esc键或单击【取消】或【Cancel】按钮,则返回0值或空串。
格式:Var=InputBox(Prompt[,title][,defsult][,x,y][,helpfile,context])
说明:
(1)Var可以是变体变量或字符串型变量,也可以是数值型变量(若输入内容不可转换成数值型数据,将会产生运行错误)。
(2)Prompt:提示用的文字信息,字符串类型,其长度不能超过1024个字符;该参数不可缺省。在对话框内显示Prompt提示文字信息时,可以自动换行。若想按自己的要求换行,则可采用插入回车换行符,即Chr(13)+Chr(10)或vbCrLf来实现。
(3)title:对话框标题(字符型),缺省时,为空白。
(4)default:显示在用户编辑框中的缺省值(字符型),缺省时,返回空值。
(5)x,y:对话框在屏幕上显示时的位置,单位是特维,(x,y)是对话框左上角点的坐标。
(6)helpfile,context:帮助文件名及帮助主题号。有本选项时,在对话框中自动增加一个帮助按钮。
MsgBox函数以信息框的形式用于向用户发布提示信息,并要求用户做出必要的响应。如图3-17所示。

图3-17 MsgBox对话框
MsgBox函数的格式:Var=MsgBox(Prompt[,button][,title][,helpfile,context])
说明:
(1)Prompt、title、helpfile,context参数的含义同InputBox函数。
(2)button:这是一个由3个数值常量组成的式子,形式为b1+b2+b3,用于决定信息框中按钮的个数和类型以及出现在信息框中的图标类型,各个参量的可选值及其功能见表