VB编程的键盘控制

上传人:ni****g 文档编号:497189984 上传时间:2024-02-15 格式:DOCX 页数:3 大小:15.20KB
返回 下载 相关 举报
VB编程的键盘控制_第1页
第1页 / 共3页
VB编程的键盘控制_第2页
第2页 / 共3页
VB编程的键盘控制_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《VB编程的键盘控制》由会员分享,可在线阅读,更多相关《VB编程的键盘控制(3页珍藏版)》请在金锄头文库上搜索。

1、VB编程的键盘控制我们利用Visual BASIC编写程序,多数情况只涉及到鼠标操作(如单击、双击、拖动等)但如果程序中需 要实现文本编辑、热键激活或利用键盘进行游戏控制等功能时,将不可避免地碰到键盘捕获及处理的问题。下面, 我们就来看一看VB编程中如何进行键盘控制。_、概述在VB中,很多控件都提供了键盘输入功能(如文本框、组合框等)但它们对键盘的处理较简单,遇到复杂 一点的要求即无能为力。因而VB提供了 KeyPress、KeyUp、KeyDown三种键盘事件,当用户按键时,会触发这三 种事件,而且窗体和接受键盘输入的控件都识别这三种事件。下表对这些事件作了描述。表1键盘事件的触发原因键盘事

2、件触发原因KeyPress按下某ASCII字符键KeyDown按下键盘的任意键KeyUp释放键盘的任意键KeyDown和KeyUp事件提供了最低级的键盘响应,可用这些事件检测KeyPress事件无法检测到的情况: SHIFT、CTRL和ALT键的特殊组合。光标控制键。 HOME、END、PAGEUP PAGEDOWN 等。数字小键盘的数字键与打字键盘数字键的区别。不仅响应按键操作而且响应释放键操作(KeyPress只响应按键操作)。键盘事件彼此不相互排斥。按下某键时将生成KeyDown和KeyPress事件,而松开此键时生成KeyUp事件。 当用户按下一个KeyPress不能检测的键时将触发K

3、eyDown事件,松开此键时生成KeyUp事件。若使用KeyUp和 KeyDown事件应确保KeyPress事件的功能不够用,通常编写KeyPress事件的代码比较容易。二、KeyPress 事件在按下与ASCII字符对应的键时将触发KeyPress事件。ASCII字符集代表标准键盘的字母、数字和标点符 号以及部分控制键(ENTER、TAB、BACKSPACE键等)。KeyDown和KeyUp事件能够检测其它功能键、编辑键和光标 定位键。当处理标准ASCII字符时应使用KeyPress事件。例如,如果希望将输入到文本框中的所有字符都强制 转换为大写字符,则可在输入时使用此事件转换大小写: Pr

4、ivate Sub Text1_KeyPress(KeyAscii As Integer)KeyAscii = Asc(Ucase(Chr(KeyAscii)End SubKeyAscii参数返回对应所按键的ASCII代码。也可通过KeyPress事件识别部分控制键。例如,下述事件过程使用KeyPress检测用户是否正在按BACKSPACE 键:Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 8 Then MsgBox You Pressed the BACKSPACE key. End Sub注:BACKSPACE 键

5、的 ASCII 值为 8。还可用KeyPress事件改变某些键的缺省行为。例如,当在文本框内按ENTER键就会结束当前行输入并将光 标转到下一行(Multiline属性设为True)。在KeyPress事件中截断ENTER键(ASCII值为13)就可避免这种 情况:Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then KeyAscii = 0End Sub三、KeyUp 和 KeyDown 事件KeyUp和KeyDown事件报告键盘本身准确的物理状态:按下键(KeyDown)及松开键(KeyUp)。而KeyPr

6、ess事件并不直接地报告键盘状态,它只提供键所代表的字符而不识别键的按下或松开状态。进一步举例将有助于阐明这一差别。输入大写兽时,KeyDown事件获得A的ASCII码。在输入小写a时, KeyDown事件获得相同的ASCII码。为区分大小写,KeyDown和KeyUp事件使用shift参数。与此相对照的是, KeyPress事件将字母的大小写作为两个不同的ASCII字符处理。KeyUp和KeyDown事件通过提供下列两参数返回 输入字符的信息。1、Keycode 参数字母键的Keycode与此字母大写字符的ASCII值相同,所以A”和a”的Keycode都是由Asc(A)返回的数 值;数字与

7、标点符号键的Keycode与键上数字的ASCII码相同,因此1”和!”的Keycode都是由Asc(1)返 回的数值。Private Sub Text1_Keydown(KeyCode As Integer, Shift As Integer)If KeyCode = 65 Then MsgBox You pressed the A or a key. End Sub上例中按下A”或a”后都将显示消息框,为判断按下的字母是大写还是小写需用shift参数。可见,处理这 些键时用KeyPress事件更方便。KeyDown和KeyUp事件可识别标准键盘上的大多数控制键。其中包括功能键(F1-F12)

8、、编辑键(HOME、PAGEUP、 DELETE等)、光标键(f、l、一、一)和数字小键盘上的键。可以通过键代码常数或相应的ASCII值检测这些 键。例如:Private Sub Text1_Keydown(KeyCode As Integer, Shift As Integer)If KeyCode = 36 Then MsgBox You pressed the HOME key. End SubVB中常用控制键的Keycode值见下表:表2常用键的Keycode值键Keycode键Keycode键KeycodeBACKSPACE8TAB9ENTER13CAPS LOCK20SHIFT16

9、CTRL17PAGEDOWN34PAUSE19ESC27SPACEBAR32END35HOME36PAGEUP33INS45DEL46- I37-400-948-57A-Z65-90F1-F12112-123小键盘*106小键盘+107小键盘0-996-105小键盘-109小键盘/111小键盘ENTER1082、Shift 参数键盘事件使用shift参数来判断按下某键的同时是否按下了 SHIFT、CTRL、ALT键或它们的组合。如果按SHIFT 键,则shift为1;按CTRL键,shift为2;按ALT键,shift为3,通过键值总和来判断这些组合。例如,同 时按下SHIFT和ALT键时sh

10、ift等于5(1+4)。在使用中,可将KeyDown与KeyUp事件及shift参数一同使用以区分字符的大小写或检测各种组合键。例 如,以下事件过程可捕获CTRL+ALT+F1并给出提示:Private Sub Text1_Keydown(KeyCode As Integer, Shift As Integer)If Keycode = 112 And Shift = 6 Then MsgBox You press the CTRL+ALT+F1 Key! End Sub四、编写窗体级键盘处理程序只有获得焦点的对象才能够接受键盘事件。当窗体为活动窗体且其上所有控件均未获得焦点时,窗体才获得 焦

11、点。这种情况只有在空窗体或窗体上的控件都无效时才发生。如果将窗体上的KeyPreview属性设置为True, 则每个控件在识别其所拥有的KeyPress、KeyUP、KeyDown事件之前,窗体会抢先接受这些键盘事件。当您希望 无论何时按下某键都会执行同一个操作,而不管哪个控件在此时具有焦点时,这样设置KeyPreview属性极为有 来源网络,仅供参考用。可在属性窗口中或通过Form_Load过程中的代码设置窗体的KeyPreview属性为True:Private Sub Form_LoadForml.KeyPreview = TrueEnd Sub需要注意的是,当把窗体的KeyPreview

12、属性设置为True时,窗体在控件之前识别键盘事件,但对控件来说 事件仍然会发生,这可能会造成一次按键触发多个不同的处理。为防止这种情况,可在窗体键盘事件过程结束前 将KeyAscii或KeyCode重置为0。例如,在窗体上将ENTER键捕获并处理后,把KeyAscii或KeyCode设置为0, 则控件在自己的键盘事件过程中将无法识别按下的ENTER键,因而控件的键盘事件过程也不被调用。下面,我们来看一个键盘处理的简单例子:设计一个窗体和文本框以及其它控件,无论焦点在哪个控件,按 下CTRL+P即让文本框显示Hello! ;按下ALT+C清除文本框;按下F10结束程序。Private Sub Form_Load()Form1.KeyPreview = TrueEnd SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = 80 And Shift = 2 Then Textl.Text = Hello!If KeyCode = 67 And Shift = 4 Then Textl.Text =If KeyCode = 121 Then EndEnd Sub

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号