付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VB编程的键盘控制我们利用VisualBASIC编写程序,多数情况只涉及到鼠标操作(如单击、双击、拖动等),但如果程序中需要实现文本编辑、热键激活或利用键盘进行游戏控制等功能时,将不可避免地碰到键盘捕获及处理的问题。下面,我们就来看一看VB编程中如何进行键盘控制。一、概述在VB中,很多控件都提供了键盘输入功能(如文本框、组合框等),但它们对键盘的处理较简单,遇到复杂一点的要求即无能为力。因而VB提供了KeyPress、KeyUpKeyDown三种键盘事件,当用户按键时,会触发这三种事件,而且窗体和接受键盘输入的控件都识别这三种事件。下表对这些事件作了描述。表1键盘事件的触发原因键盘事件触发原因
2、KeyPress按下某ASCII字符键KeyDown按下键盘的任意键KeyUp释放键盘的任意键KeyDown和KeyUp事件提供了最低级的键盘响应,可用这些事件检测KeyPress事件无法检测到的情况:SHIFT、CTRL和ALT键的特殊组合。光标控制键。HOMEENDPAGEUPPAGEDOVWN。数字小键盘的数字键与打字键盘数字键的区别。KeyPress只响应按键操作)。KeyDown和KeyPress事件,而松开此键时生成KeyUp事件。KeyDown事件,松开此键时生成KeyUp事件。若使用KeyUp和KeyDown事件应确保KeyPress事件的功能不够用,通常编写二、KeyPres
3、s事件在按下与ASCII字符对应的键时将触发KeyPress事件。号以及部分控制键 (ENTERTABBACKSPACE等)。KeyDown和KeyUp事件能够检测其它功能键、 编辑键和光标定位键。 当处理标准ASCII字符时应使用KeyPress事件。例如,如果希望将输入到文本框中的所有字符都强制转换为大写字符,则可在输入时使用此事件转换大小写:PrivateSubText1_KeyPress(KeyAsciiAsInteger)KeyAscii=Asc(Ucase(Chr(KeyAscii)EndSubKeyAscii参数返回对应所按键的ASCII代码。也可通过KeyPress事件识别部分
4、控制键。例如,下述事件过程使用KeyPress检测用户是否正在按BACKSPACE键:PrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=8ThenMsgBoxYouPressedtheBACKSPACEkey.EndSub注:BACKSPACE的ASCII值为8。还可用KeyPress事件改变某些键的缺省行为。例如,当在文本框内按ENTER1就会结束当前行输入并将光标转到下一行(Multiline属性设为True)。在KeyPress事件中截断ENTER!(ASCII值为13)就可避免这种情况:PrivateSubText1_KeyPr
5、ess(KeyAsciiAsInteger)IfKeyAscii=13ThenKeyAscii=0EndSub三、KeyUp和KeyDownKeyUp和KeyDown事件报告键盘本身准确的物理状态:按下键(KeyDown及松开键(KeyUp)。而KeyPress不仅响应按键操作而且响应释放键操作(键盘事件彼此不相互排斥。按下某键时将生成当用户按下一个KeyPress不能检测的键时将触发KeyPress事件的代码比较容易。II1I1IIIIASCII字符集代表标准键盘的字母、数字和标点符事件并不直接地报告键盘状态,它只提供键所代表的字符而不识别键的按下或松开状态。进一步举例将有助于阐明这一差别。
6、输入大写A时,KeyDown事件获得A的ASCII码。在输入小写a时,KeyDown事件获得相同的ASCII码。为区分大小写,KeyDown和KeyUp事件使用shift参数。与此相对照的是,KeyPress事件将字母的大小写作为两个不同的ASCII字符处理。KeyUp和KeyDown*件通过提供下列两参数返回输入字符的信息。1、Keycode参数字母键的Keycode与此字母大写字符的ASCII值相同,所以A和a的Keycode都是由Asc(A)返回的数值;数字与标点符号键的Keycode与键上数字的ASCII码相同,因此1和!的Keycode都是由Asc(1)返回的数值。PrivateSu
7、bText1_Keydown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=65ThenMsgBoxYoupressedtheAorakey.EndSubI上例中按下A或a后都将显示消息框,为判断按下的字母是大写还是小写需用shift参数。可见,处理这些键时用KeyPress事件更方便。KeyDown和KeyUp事件可识别标准键盘上的大多数控制键。其中包括功能键(F1-F12)、编辑键(HOMEPAGEUPDELETE)、光标键(T、J、一、一)和数字小键盘上的键。可以通过键代码常数或相应的:ASCII值检测这些键。例如:.S/、/,PrivateSubT
8、ext1_Keydown(KeyCodeAsInteger,ShiftAsInteger)IfKeyCode=36ThenMsgBoxYoupressedtheHOMEkey.EndSubVB中常用控制键的Keycode值见下表:表2常用键的Keycode值键Keycode键Keycode,|j-键KeycodeBACKSPACE8TAB9ENTER13CAPSLOCK20SHIFT16CTRL17PAGEDOWN34PAUSE19ESC27SPACEBAR32END35HOME36PAGEUP33INS45DEL4637-400-948-57A-Z65-90F1-F12112-123小专量盘
9、*106小键盘+107小键盘0-996-105小专也盘-109小键盘/111小键盘ENTER108、II2、Shift参数键盘事彳使用shift参数来判断按下某键的同时是否按下了SHIFT、CTRLALT键或它们的组合。如果按SHIFT键,则shift为1;按CTRLM,shift为2;按ALT键,shift为3,通过键值总和来判断这些组合。例如,同时按下SHIFT和ALT键日shift等于5(1+4)。在使用中,可将KeyDown与KeyUp事件及shift参数一同使用以区分字符的大小写或检测各种组合键。例如,以下事件过程可捕获CTRL+ALT+F伊给出提示:PrivateSubText1_
10、Keydown(KeyCodeAsInteger,ShiftAsInteger)IfKeycode=112AndShift=6ThenMsgBoxYoupresstheCTRL+ALT+F1Key!EndSub四、编写窗体级键盘处理程序只有获得焦点的对象才能够接受键盘事件。当窗体为活动窗体且其上所有控件均未获得焦点时,窗体才获得焦点。这种情况只有在空窗体或窗体上的控件都无效时才发生。如果将窗体上的KeyPreview属性设置为True,则每个控件在识别其所拥有的KeyPress、KeyURKeyDown事件之前,窗体会抢先接受这些键盘事件。当您希望无论何时按下某键都会执行同一个操作,而不管哪个
11、控件在此时具有焦点时,这样设置KeyPreview属性极为有来源网络,仅供参考用。可在属性窗口中或通过Form_Load过程中的代码设置窗体的KeyPreview属性为True:PrivateSubForm_LoadForml.KeyPreview=TrueEndSub需要注意的是,当把窗体的KeyPreview属性设置为True时,窗体在控件之前识别键盘事件,但对控件来说事件仍然会发生,这可能会造成一次按键触发多个不同的处理。为防止这种情况,可在窗体键盘事件过程结束前将KeyAscii或KeyCode重置为0。例如,在窗体上将ENTERS捕获并处理后,把KeyAscii或KeyCode设置为0,则控件在自己的键盘事件过程中将无法识别按下的ENTERS,因而控件的键盘事件过程也不被调用。下面,我们来看一个键盘处理的简单例子:设计一个窗体和文本框以及其它控件,无论焦点在哪个控件,按下CTRL+P让文本框显示Hello!;按下ALT+C清除文本框;按下F10结束程序。PrivateSubForm_Load()Form1.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内蒙古杭锦旗城镇初级中学2026届初三年级模拟考试生物试题试卷含解析
- 2026年玄武岩材料耐腐蚀性能使后期防腐成本降低80%经济性测算
- 2026年波罗的海干散货指数与全球原材料贸易跟踪
- 2025年临床医学阶段测试试卷
- 软件公司客服部门负责人面试问题与技巧
- 日化产品市场推广岗位应聘全攻略
- 企业并购法务专员的面试问题与技巧
- 区块链技术原理及应用案例
- 会议议程范本
- 互联网公司软件工程师面试宝典
- 2026法律基础常识试题及答案
- 2025年幼儿园初级保育员证考试试题和答案
- 航空航天飞控系统设计手册
- 2026年福建省烟草专卖局第二批招聘(127人)考试参考试题及答案解析
- - 育才中学2026学年春季第二学期初二年级地理实践活动与知识应用教学工作计划
- 2026年永州职业技术学院高职单招职业适应性测试模拟试题带答案解析
- 肥胖课件之针灸治疗
- “十五五规划纲要”解读:双碳引领绿色发展
- 建筑施工安全管理细则范本
- 海信集团AI面试求职者常见疑惑解答
- 巴比门店加盟协议书
评论
0/150
提交评论