VB键盘与鼠标事件过程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Private Sub Form_Load()
b = False DrawWidth = 5 End Sub
Private Sub Command1_Click()
Cls End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If KeyAscii < 48 Or KeyAscii > 57 Then
Msgbox “请输入0-9之间的数字”
KeyAscii = 0
End If
End Sub
2.用KeyPress捕捉击键动作
Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii =13 Then
Sub object_KeyUp(keycode As Integer,shift As Integer)
两个参数:1.键盘扫描码 2.返回Shift、Ctrl、Alt键的状态
参数KeyCode:键盘扫描码
由于字母键不论大写还是小写都是按同一个键,所
以按下每个字母键时的 KeyCode 值只能为一个值,如
KeyPress事件可用于文本框、图片框、命令按钮、
复选框、列表框、组合框、滚动条、窗体等有关控件。
KeyPress事件过程
在窗体上画一个控件,双击该控件,进入程序代码窗口后,从
“过程”框中选取KeyPress,即可定义KeyPress事件过程。 一般格式为: Private Sub Form_KeyPress(KeyAscii As Integer) 窗体的事件过程
如果同时按下两个或三个转换键,则Shift参数的值即为上述
两者或三者之和。请自己试一试。(参照教材P208页) 同时按下Ctrl和Shift键,Shift参数值为3
1.捕捉某功能键
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = &H70 Then Print "压下了功能键F1" 按Ctrl+A键实现文本框 End If 内容"全选" End Sub Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If Shift = 2 And KeyCode = 65 Then Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End If End Sub
第7章 键盘与鼠标事件过程
主要内容
使用键盘事件过程,可以处理当按下或释放键盘上 某个键时所执行的操作;而鼠标事件过程可用来处 理与鼠标光标的移动和位置有关的操作。本章介绍 与键盘和鼠标有关的事件过程。
键盘事件
在Visual Basic中,提供KeyPress、KeyDown、 KeyUp三种键盘事件,窗体和接受键盘输入的控件都 识别这三种事件。 KeyPress 按了键盘的某键时触发 。 KeyDown 按下键盘的某键触发。 KeyUp 释放键盘的某键触发。
Private Sub object_KeyPress(KeyAscii As Integer)
控件的事件过程
KeyPress事件过程
形参KeyAscii,其参数值是当KeyPress事件发生时,
由系统自动传递过来的当前所按键的Ascii码值。
例 当按下“A”键,系统传递给形参KeyAscii的值为65; 当按下“a”键时,则系统传递给KeyAscii的值为97。
后的值。
活动窗体和活动控件触发键盘事件的顺序
按下某键
默认值为False
F
KeyPreview属性
T
窗体键盘事件
控件键盘事件
控件键盘事件
键盘事件与其它事件
在对某活动控件按键时,先触发该控件的键盘事件, 然后才是其它事件。如文本框,按键后,触发其键 盘事件,然后是Change事件,并显示字符。 键盘事件常用于检查输 入数据是否合法。如在 某文本框中输入“a”, 则在文本框接受字符前, 键盘事件的程序可以先 期截获该字符。
PSet (X, Y), RGB(cr, cg, cb)
End If End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
b = False
Form1.MousePointer = 1
End Sub
【例7.1】
7.1. 2 KeyDown事件和KeyUp事件
程序运行过程中,当按下键盘某个键时,则产生 KeyDown事件,而放开该键时产生KeyUp事件。按 下某个键也会发生KeyPress事件,但与KeyDown 事件是不一样的。KeyDown和KeyUp事件返回的是 键盘的直接状态,即该键的“扫描码”值。
键盘事件发生
Change事件发生
键盘事件与其它事件
例: 设置一个文本框,只能用来输入数字,如果输 入其他的字符,就发出警告声。
7. 1.1 KeyPress事件
在程序运行过程中,当按下键盘某个键时,会触 发当前拥有输入焦点的那个控件的KeyPress事件。 当KeyPress事件发生时,可获得当前所按键的字 符ASCII码值,如:按下回车键时,可获得该键的字 符ASCII码值13。
只有获得焦点的对象才能够接受键盘事件。 键盘事件可获得当前所按键的信息。
键盘事件的先后顺序
按下键盘的某键
注意:有时一个
动作会触发若干
KeyDown事件发生
个事件。当发生
触发了多个键盘
事件。
KeyUp事件发生
窗体的KeyPreview属性
窗体的KeyPreview属性设置为True,则首先触 发窗体的KeyPress、KeyDown和KeyUp 事件,然后 再触发活动控件的KeyPress、KeyDown和KeyUp 事 件。 即如窗体键盘事件过程修改了所按键的值,则当 前具有焦点的控件的KeyPress事件过程将接收到修改
KeyDown和KeyUp事件过程
Sub Form_KeyDown(keycode As Integer, shift As Integer) Sub Form_KeyUp(keycode As Integer, shift As Integer)
可用于窗体和文本框、图片框等有关控件。
Sub object_KeyDown(keycode As Integer,shift As Integer)
b = True Form1.MousePointer = 99 Form1.MouseIcon = LoadPicture("D:\pencil_green.ico") End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If b Then cr = Rnd * 255: cg = Rnd * 255: cb = Rnd * 255
数字0键 向左一大步 “-”键 向左一小步 “=”键 “\”键 向右一大步 向右一小步
【例7.3】
7.2 鼠标事件
鼠标事件 Click、DblClick、MouseMove、
MouseDown 、MouseUp等事件。
7.2.1 鼠标光标的形状
一.MousePointer属性
鼠标光标的形状通过MousePointer属性。该属性可以
13 8 9
Enter
BackSpace Tab
字键、字符键、标点符号键。
控制键只识别: ENTER、 TAB 和 BACKSPACE 键。
应用:对输入的数据进行验证、限制和修改
1.限制数据输入
文本框中只能接收“0”~“9”的数字字符。
Sub Text1_KeyPress(KeyAscii As Integer)
End Sub
7.2 鼠标事件
1)鼠标事件与事件过程 Click、DblClick、MouseMove、 MouseDown 、 MouseUp等事件。 鼠标发生某个动作时触发相应的事件。 注意:有时一个动作会触发若干个事件。 鼠标单击时,依次引发 MouseDown、MouseUp、 Click事件,即Click事件是包括在鼠标按下和放开的 一个组合过程中。
2.捕捉Shift、Ctrl、Alt键
Const Key_F1 = &H70 Const Shiftkey = 1
Const Ctrlkey = 2
Const Altkey = 4 Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = Key_F1 And Shift = Shiftkey Then
Print Text1.Text
Text2.SetFocus
End If
End Sub
3.用KeyPress过程输入口令显示“*”
Dim Psw As String Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii >=65 And KeyAscii <=122 Then Psw = Psw & chr(KeyAscii) KeyAscii=42 End If „ 42为字符“*”的Ascii码值 Text1所接收的符号 Ascii码值全部为42 即全部为“*”
在属性窗口中设置,也可以在程序代码中设置。
格式为:对象名. MousePointer=设置值
MousePointer属性是个整数值,可以取0-15间的任意
值。参照P214页表7-6。
【例 7.4】
一.自定义鼠标光标 如果将MousePointer属性设置为99,则可通过 MouseIcon属性定义自己的鼠标光标。 属性窗口设置:
写;通过 Keycode 和 Shift 返回输入键盘码的信息。 按下键盘时,控件的键盘事件触发顺序为
KeyDown
KeyPress
KeyUp
【例7.2】 通过键盘控制滚动条。P210
数字0键 向左一大步 “-”键 向左一小步 “=”键 “\”键 向右一大步 向右一小步
通过键盘控制滚动条。P210
Print "压下了Shift+F1"
End If End Sub
KeyDown、KeyUp与KeyPress的区别:
KeyPress不直接报告键盘的状态,只报告Ascii值;不 识别按下、放开的动作;通过 Keyascii 返回输入字 符的信息。 KeyDown 、KeyUp区分按下与放开操作;不区分大小
将MousePointer属性设置为“99-Custom”; 将一个图标文件赋给MouseIcon属性。
代码方法为: Form1.MousePointer=99
Form1.MouseIcon=LoadPicture(“c:\vb98\„”)
【例】利用鼠标事件画彩色线。
Dim b As Boolean
按下“A”与按下“a”得到的KeyCode值都是65(有上
下档键的字符取下档键的Ascii码值)。
Shift:记录Shift、Ctrl、Alt三个转换键的状态
按Shift键(001B)
Shift=1
按Ctrl键 (010B)
按Alt键
Shift=2
Shift=4
b2 b1 b0
(100B)
KeyPress事件能识别字母、数字、标点等键盘上 的字符键。此外还识别Enter、BackSpace、Tab 等键,其它功能键不能识别。 如何获得按下字符的Ascii
参数:KeyAscii As Integer 程序中可以直接引用 KeyAscii KeyAscii代表按键的相对应的Ascii码值
常用Ascii码(10进制)表
Ascii码 48-57 65-90 97-122
32-47 58-64 91-96 123-126
键
0-9 A-Z a-z
各种标点符号
注:表内的为KeyPress事件能 接收的键。
ASCII码编码范围:0-127共
128个。0-31和127为控制符,
无法打印。
KeyPress 事件识别范围:数