“ 本节课程一起学习VB中的键盘事件。”
键盘事件的作用:
获得键盘输入信息,只有获得焦点的对象才能接受键盘事件。
键盘事件有三种:
KeyPress、KeyDown、KeyUp
KeyPress:
按了键盘的某键时触发,返回键盘的Ascii码值
KeyDown:
按下键盘的某键触发,返回键盘的直接状态,即该键的"扫瞄码"值
KeyUp:
释放键盘的某键触发,返回键盘的直接状态,即该键的"扫瞄码"值
键盘事件触发顺序
在按下键盘某键时,三种事件触发顺序是:
KeyDown → KeyPress → KeyUp
写个简单的代码来测试一下是不是这样的顺序。如下所示:
按下键盘任意按键(除功能键)
代码如下:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Print "KeyDown"
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
Print "KeyPress"
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Print "KeyUp"
End Sub
当窗体KeyPreview属性设置为True时,则首先触发窗体的键盘事件。
键盘事件优先于控件事件发生。例如Text_Change事件,在键盘事件之后发生。
键盘事件的形参:
KeyPress事件有一个形参:KeyAscii
KeyDown事件有两个形参:KeyCode、Shift
KeyUp事件有两个形参:KeyCode、Shift
形参含义解释
1,KeyAscii
该值接受系统自动传来的当前按键的Ascii码值。可以识别字母、数字、标点、Enter、BackSpace、Tab等,其它功能键不能识别。
"A"键的KeyAscii值=65 "a"键的KeyAscii值=97
常用KeyAscii值对照表
2,KeyCode
返回键盘的扫描码值。不区分大小写。"A"和"a"的KeyCode都是65
3,Shift
返回Shift、Ctrl、Alt三键的状态
按下Shift时,Shift=1
按下Ctrl时,Shift=2
按下Alt时,Shift=4
举例1:
当用户按下键盘时,输出KeyAscii、KeyCode、Shift三个形参的值。
代码如下:
Private Sub Form_KeyPress(KeyAscii As Integer)
Print "KeyAscii值:" & KeyAscii;
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Print " KeyCode值:" & KeyCode; " Shift值:" & Shift
End Sub
- 1
- 2
- 3
- 4
- 5
- 6
举例2:
限制文本框中只能接收“0”~“9”的数字字符。
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then
MsgBox "请输入0-9之间的数字"
KeyAscii = 0
End If
End Sub
- 1
- 2
- 3
- 4
- 5
- 6