VB程序设计键盘与鼠标事件过程
- 格式:docx
- 大小:19.87 KB
- 文档页数:6
VB程序设计键盘与鼠标事件过程
11.1 键盘事件
在Visual Basic中,窗体和接受键盘输入的控件都能识别这三种键盘事件:一是KeyPress,按下对应某ASCII字符的键;二是KeyDown,按下键盘的任意键;三是KeyUp,释放键盘的任意键。只有获得焦点的对象才能接受键盘事件。
11.1.1 KeyPress事件
当按下某个键时,将触发拥有输入焦点(Focus)的那个控件的KeyPress事件,返回“所按字符”的ASCII码。
语法格式:
Sub Object_KeyPress(KeyAscii As Integer)
或Sub Object_KeyPress([index As Integer,]KeyAscii As Integer)
说明:
1、Object:是指窗体或控件对象名;
2、index:一个整数,它用来惟一标识一个控件数组中的控件;
3、KeyAscii:是指KeyAscii参数返回对应ASCII字符代码的整型数值;
KeyPress事件带有一个参数,这个参数有两种形式。第一种形式为:Index As Integer,这种形式只用于控件数组;第二种形式为:KeyAscii As Integer,这种形式只用于单个控件。
11.1.2 KeyDown事件和KeyUp事件
当按下或松开某个键时,将触发拥有输入焦点(Focus)的那个控件的KeyDown事件或者KeyUp事件,返回键盘的直接状态。
KeyDown事件和KeyUp事件的参数也有两种形式:
(1)Index As Integer 只用于控件数组。
(2)KeyCode As Integer,Shift As Integer 用于单个控件,本章只讨论这种形式。
语法格式为:
Sub Object_KeyDown(KeyCode As Integer,Shift As Integer)
Sub Object_KeyUp(KeyCode As Integer,Shift As Integer)
说明:
1.KeyCode参数
KeyCode表示按下的物理键,以“键”为准,而不是以“字符”为准。即大小字母使用同一个键,KeyCode相同;上档键字符和下档键字符使用同一个键,KeyCode相同。
2、Shift参数
Shift是转换键,表示事件发生时3个转换键的状态,即Shift键、Ctrl键和Alt键的状态。
二进制数 十进制数 作 用 二进制数 十进制数 作 用
000 0 没有按下任何转换键 100 4 按下一个Alt键
001 1 按下一个Shift键 101 5 按下Alt+Shift组合键
010 2 按下一个Ctrl键 110 6 按下Ctrl+Alt键
011 3 按下Ctrl+Shift组合键 111 7 按下Ctrl+Alt+Shift组合键
举例:用Shift参数来判断是否按下了字母的大写形式。
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As
Integer)
If KeyCode = vbKeyC And Shift = 1 Then
MsgBox "你按下的是Shift键+字母C键组合,即输入大写字母C"
End If
End Sub
11.2 鼠 标 事 件
在Visual Basic中,提供了鼠标的MouseUp 、MouseDown和MouseMove事件,通过响应这些鼠标事件,应用程序能对鼠标位置及状态的变化作出响应操作。
(1)MouseUp:释放任意鼠标键按钮时发生; (2)MouseDown:按下任意鼠标键按钮时发生;
(3)MouseMove:每当鼠标指针移动到屏幕新位置时。
当鼠标事件发生时,鼠标指针位于哪个对象,就由哪个对象来识别鼠标事件。
11.2.1 鼠标事件过程
1、压下鼠标按钮事件过程
Sub Form_MouseDown(Button As Integer,Shift As Integer,x
As Single,y As Single)
End Sub
2、松开鼠标按钮事件过程
Sub Form_MouseUp(Button As Integer,Shift As integer,x As
Single,y As Single)
End Sub
3、移动鼠标光标事件过程
Sub Form_MouseMove(Button As Integer,Shift As integer,x
As Single,y As Single)
End Sub
说明:
(1)Button:被按下的鼠标按钮。对Mouseup和MouseDown事件来说,只能用鼠标的按键参数判断是否按下或松开某一个键,因此Button参数的取值只有3种,即001(十进制1)、010(十进制2)、100(十进制4)。
符 号 常 量 值 作 用 符 号 常 量 值 作 用
LEFT_BUTTON 1 按下鼠标左按钮 MIDDLE_BUTTON 4 按下鼠标中间按钮
RIGHT_BUTTON 2 按下鼠标右按
(2)Shift:表示Shift、Ctrl和Alt的状态,见下表。
Shift参数值
常 数 作 用
二进制 十进制
000 0 未按任何键
001 1 VbShiftMask Shift键被按下
010 2 VbCtrlMask Ctrl键被按下
011 3 VbShiftMask + VbCtrlMask 同时按下Shift和Ctrl键
100 4 VbAltMask Alt键被按下
101 5 VbShiftMask + VbAltMask 同时按下Shift和Alt键
110 6 VbCtrlMask + VbAltMask 同时按下Ctrl和Alt键
111 7 VbCtrlMask+ VbAltMask+
VbShiftMask 同时按下Ctrl、Alt、Shift键
(3)x、y:鼠标光标的当前位置。这里的x、y不须要给出具体的数值,它随鼠标光标在窗体上移动而变化。当移到某个位置时,如果按下键,则产生MouseDown事件;如果松开按键,则产生MouseUp事件。(x,y)通常指接收鼠标事件的窗体或控件上的坐标。
举例:下面过程可用来测试按下鼠标的哪一个键。
Private Sub Form_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)
If Button = 1 Then Print "按下鼠标左键"
If Button = 2 Then Print "按下鼠标右键"
If Button = 4 Then Print "按下鼠标中间键"
End Sub 钮 举例:下面过程可以判断是否同时按下了鼠标的左、右键。
Private Sub Form_MouseMove(Button As Integer, Shift As
Integer, X As Single, Y As Single)
If (Button And 3) = 3 Then
Print "正同时按着鼠标的左、右键"
End If
End Sub
11.3 鼠 标 光 标
11.3.1 MousePointer属性
11.3.2 设置鼠标光标形状
1.在程序代码中设置MousePointer属性
2.在属性窗口中设置MousePointer属性
3.自定义鼠标光标
11.4 拖放
所谓拖放,就是用鼠标从屏幕上把一个对象从一个地方拖拉(Dragging)到另一个地方再放下。拖放的一般过程是:把鼠标光标移到一个控件对象上,按下鼠标键(不要松开),然后移动鼠标,对象将随鼠标的移动而在屏幕上拖动,松开鼠标键后,对象即被放下。常常把原来位置的对象叫做源对象,而拖动后放下的位置的对象叫做目标对象,在拖动的过程中,被拖动的对象呈现灰色。
小结:
Visual Basic应用程序能够响应多种键盘事件和鼠标事件。在Visual Basic中,提供了三种键盘事件:一是KeyPress,按下对应某ASCII字符的键;二是KeyDown,按下键盘的任意键;三是KeyUp,释放键盘的任意键。同时,也提供了三种鼠标事件:一是MouseUp,释放任意鼠标键按钮;二是MouseDown,按下任意鼠标键按钮;三是MouseMove,移动鼠标指针到屏幕新位置。通过响应这些键盘及鼠标事件,应用程序能对其位置及状态的变化作出响应操作。
作业:
1、 简述KeyDown与KeyPress事件的区别。 2、 如果在KeyDown事件中将KeyCode设置为0,KeyPress的KeyAscii参数会不会受影响?如果输入的对象是文本框,那么文本框的内容是否会受影响?
3、 编写一个程序,当同时按下Alt、Shift和F10键时,在窗体上显示“谢谢你的使用,再见!”并结束程序的运行。