键盘与鼠标操作.docx

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第八章键盘与鼠标操作(2w)

程序在运行过程中,经常需要知道用户对键盘和鼠标的具体操作,例如用户按下键盘上的“A”键时是想输入字符“A”还是输入“a”呢,当用户利用鼠标选中“删除”时是想彻底删除还是想放入回收站呢等等,以便于根据不同的情况,执行不同的具体操作。为此VisualBasic专门定义了和键盘与鼠标有关的事件和方法。

键盘操作

当我们敲击一下键盘上的某个按键时,将会先后触发对应对象的KeyDown、KeyPress、(对于文本框之类的对象还会触发Change)、KeyUp等一系列事件。根据不同的具体应用,我们可以选择不同的事件进行编程。

需要说明的是,对键盘的某个按键进行操作时,触发的是目前具有输入焦点(Focus)

对象的事件。一般情况下窗体对象不响应这些事件,除非满足下面几个条件:

目前窗体上没有添加任何对象,则窗体接收键盘事件。

目前窗体上有对象,但是它们属于下面两种情况:

这类对象不具有接收焦点的能力,例如:标签、框架、形状(Shape)、Timer、

Image等等

这类对象本来可以接收焦点(例如:文本框),但目前处于Disabled状态。

窗体的KeyPreview属性为True。所谓KeyPreview的属性为True,就是说无论在窗体内的什么控件内利用键盘输入,都需要事先经过窗体进行检查。

其中,前两种情况下只触发窗体的KeyDown、KeyPress、KeyUp事件,第三种情况下将先后触发窗体的KeyDown、控件的KeyDown、窗体的KeyPress、控件的KeyPress、窗体的KeyUp、控件的KeyUp事件。

KeyPress事件

KeyPress事件过程的的形式有两种:

PrivateSub对象名_KeyPress(KeyAsciiAsInteger) 用于非控件数组PrivateSub对象名_KeyPress(IndexAsInteger,KeyAsciiAsInteger)用于控件数组其中:KeyAscii的值在本过程中由系统自动提供,就是用户输入字符的ASCII值。例如:正常情况下我们按下键盘上的“A”键,则KeyAscii的值为97,表示用户想

输入字符“a”;当CapsLock键锁定为大写或同时按下Shift键时,KeyAscii的值为65,表示用户想输入字符“A”。

说明:

并不是按下键盘上的任意一个键都会引发 KeyPress事件,只有那些会产生

ASCII的按键(例如:数字键、大小写字母键、回车、空格等)才会触发KeyPress事件。对于那些不能产生ASCII的按键(例如:方向键←↑→↓)则不会触发KeyPress事件。

因为KeyPress事件在Change事件之前触发,因此如果在KeyPress事件中改变了KeyAscii的值,那么在控件中回显的字符将是改变后的结果。例如下面代码的功能就是无论输入的是大写还是小写,在Text1内都强制显示为小写字母:

PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=65AndKeyAscii=90Then

KeyAscii=KeyAscii+32EndIf

EndSub

当窗体的KeyPreview属性为True时,在窗体的KeyPress事件里如果改变了KeyAscii的值,那么控件的KeyPress事件里的KeyAscii的值也会跟着改变,当然回显的字符也就被改变了。例如下面的代码就是强制用户在成绩录入窗体里只能输入数值,如果输入非数值字符则鸣笛报错,如图8-1所示:

图8-1窗体的keyPreview示例

PrivateSubForm_KeyPress(KeyAsciiAsInteger)IfKeyAscii48OrKeyAscii57Then

KeyAscii=0Beep

EndIfEndSub

KeyUp事件和KeyDown事件

当焦点在某个对象上时,按下键盘上的某个键就会触发 KeyDown事件,释放某个按键时就会触发KeyUp事件。

根据该控件是否为控件数组的不同,KeyDown和KeyUp事件过程也存在两种形式:

PrivateSub对象名_KeyDown(KeyCodeAsInteger,ShiftAsInteger)PrivateSub对象名_KeyUp(KeyCodeAsInteger,ShiftAsInteger)

Private

您可能关注的文档

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地湖北
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档