news 2026/7/10 10:34:24

VB 键盘事件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VB 键盘事件

键盘是另一个输入数据或信息的重要工具。Visual Basic提供了三种事件处理键盘行为,即KeyPress,KeyDown和KeyUp事件,而且窗体和接受键盘输入的控件都可识别这三种事件。

1.KeyPress事件

KeyPress事件是当键盘有按键发生触发时。KeyPress事件检测有Enter,Tab,BackSpace以及键盘上的字母、数字和标点符号键,对于其他功能键、编辑键和定位键,则不作响应。其语法格式为:

Private Sub 对象_KeyPress(KeyAscii As Integer)

KeyAscii参数是按键对应的ASCII码值。例如,在一个空白窗体的Form_KeyPress事件过程中,输入显示此参数的命令:

Print KeyAscii

运行程序后,如果在键盘上按下“a”字符,窗体将会显示出数字97,也就是KeyPress事件会在用户按下“a”字符时返回其字符码97。不过这些字符码通常不是我们需要的,利用Chr函数就可将字符码转换为该字符了,对于上行程序代码可改为:

Print Chr(KeyAscii)

KeyPress事件过程在截取TextBox或ComboBox控件所输入的击键时,可立即测试击键的有效性,也可用于识别键盘是否按键,或是否按下某些特定键(如回车键)。例如在给文本框输入数据时,要求只能输入0~9数字的程序代码为:

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii < 48 Or KeyAscii > 57 Then

KeyAscii = 0

Text1.SetFocus

End If

End Sub

数字0~9的ASCII值位于48~57之间。当按下的不是有效的数字时,KeyPress事件可使其在文本框中不显示,这样就不需要在文本框的LostFocus事件中判断输入的合法性了。

2.KeyDown和KeyUp事件

KeyDown事件是当按下按键时触发,KeyUp事件是当释放按键时触发,这两个事件提供了最低级的键盘响应,可以报告键盘的物理状态。语法格式如下:

Private Sub 对象_KeyDown(KeyCode As Integer, Shift As Integer)

Private Sub 对象_KeyUp(KeyCode As Integer, Shift As Integer)

其中,KeyCode是所按键的ASCII码值,Shift表示Shift,Ctrl,Alt键的按下状态。

KeyDown和KeyUp事件除了可识别KeyPress事件可识别的键,还可识别键盘上的大多数键,如功能键、编辑键、定位键和数字小键盘上的键。虽然键盘上的数字键与小键盘上的数字键的字符相同,但其ASCII码值是不同的。如表8.7所示,列出了一些常用的按键与KeyCode、常数的对应关系。

表8.7 一些常用KeyCode值

功能键

KeyCode值

常 数

功能键

KeyCode值

常 数

F1

112

vbKeyF1

Enter

13

vbKeyReturn

F2

113

vbKeyF2

Esc

27

vbKeyEscape

F3

114

vbKeyF3

PageUp

33

vbKeyPageUp

F4

115

vbKeyF4

PageDown

34

vbKeyPageDown

F5

116

vbKeyF5

Home

35

vbKeyHome

F6

117

vbKeyF6

End

36

vbKeyEnd

F7

118

vbKeyF7

Insert

45

vbKeyInsert

F8

119

vbKeyF8

Delete

46

vbKeyDelete

F9

120

vbKeyF9

37

vbKeyLeft

F10

121

vbKeyF10

38

vbKeyUp

Backspace

8

vbKeyBack

39

vbKeyRight

Tab

9

vbKeyTab

40

vbKeyDown

KeyDown和KdyUp事件报告键盘本身准确的物理状态,而KeyPress事件只提供键所代表的字符而不识别键的按下或松开状态。例如在输入大写字母“A”时,KeyDown事件获得“A”的ASCII码,输入小写“a”时,KeyDown事件获得相同的ASCII码。为了区分大小写,这些事件使用Shift参数。与此相对照的是,KeyPress事件将字母的大小写作为两个不同的ASCII字符处理。

键盘事件彼此之间并不互相排斥,当按下某个键时,将产生KeyPress和KeyDown事件。如果是KeyPress事件不能检测的键,那么仅触发KeyDown事件。虽然KeyDown和KeyUp事件可应用于大多数键,它们最经常应用的还是扩展的字符键、定位键、修饰键和按键的组合,区别数字小键盘和常规数字键。例如,要想在程序运行时,通过Ctrl+End组合键结束程序,可用下列代码实现:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 35 And Shift = 2 Then End

End Sub

每个KeyDown和KeyUp事件都附加在特定的对象上。为了编写应用于窗体上所有对象的键盘处理器,应将窗体的KeyPreview属性设置为True。将KeyPreview属性设置为True时,对所有控件,在控件识别KeyPress,KeyDown和KeyUp事件之前,窗体会识别控件的这些事件。

例如,可以在窗体上添加两个控件Text1和Command1,并把窗体的KeyPreview属性改为True。先在窗体声明部分加入:

Dim ShiftKey As Integer

然后在Form_KeyDown事件中编写如下代码:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

ShiftKey = Shift And 7

Select Case ShiftKey

Case 1

Print "You pressed the Shift Key."

Case 2

Print "You pressed the Ctrl Key."

Case 4

Print "You pressed the Alt Key."

End Select

End Sub

在运行程序时,无论哪个控件获得焦点,按下每个键都会在窗体上显示相应的信息。

如果已为菜单控件定义了快捷键,那么,当按下该键时会自动触发菜单控件的Click事件,而不是键盘事件。同样,如果在窗体上有一个命令按钮,其Default属性被设置为True,则Enter键将触发此命令按钮的Click事件而不是键盘事件。如果将命令按钮的Cancel属性设置为True,则按Esc键将触发按钮的Click事件而不是键盘事件。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 0:39:16

[技术讨论] 三极管高低温特性测试

三极管控制电路是很常见的&#xff0c;但是设计不好的时候&#xff0c;也会导致电路正常的工作。比如下面两个电路&#xff0c;仅仅是集电极电阻不一样&#xff0c;也就是流过集电极的电流不一样&#xff0c;最后仿真的结果就会显示三极管BE的压降不相同&#xff0c;一个是0.77…

作者头像 李华
网站建设 2026/7/10 13:18:00

Semgrep终极指南:快速掌握跨平台静态代码分析利器

Semgrep终极指南&#xff1a;快速掌握跨平台静态代码分析利器 【免费下载链接】semgrep Lightweight static analysis for many languages. Find bug variants with patterns that look like source code. 项目地址: https://gitcode.com/GitHub_Trending/se/semgrep 告别…

作者头像 李华
网站建设 2026/7/10 10:06:58

LangChain RAG-MultiVector实现多向量检索文档

01. 多表征/向量索引多个维度记录信息 等同于为文档块生成 多个向量&#xff0c;支持的方法如下&#xff1a;把文档切割成更小的块&#xff1a;通过检索更小的块&#xff0c;但是查找其父类文档&#xff08;ParentDocumentRetriever&#xff09;。摘要&#xff1a;使用 LLM 为每…

作者头像 李华
网站建设 2026/7/10 10:10:54

鸿蒙PC UI控件库 - SecondaryButton 次要按钮详解

视频演示地址&#xff1a; &#x1f4cb; 目录 概述特性快速开始API 参考使用示例主题配置最佳实践常见问题总结 概述 SecondaryButton 是控件库中的次要按钮组件&#xff0c;适用于次要操作场景。与 PrimaryButton 的主要区别在于&#xff1a; PrimaryButton&#xff1a;实…

作者头像 李华
网站建设 2026/7/10 14:08:44

不花一分钱!2025年免费降低AI率的5个有效方法与工具指南

在论文、报告、内容创作越来越严格的时代&#xff0c;查AI率、检测AI率、降AI率 已经成为学生、写作者、博主的日常需求。很多同学因为 AI率过高被导师指出“AI痕迹太重”&#xff0c;甚至退回重写。本文今天一次性告诉你&#xff1a; 检测AI率应该注意什么 免费查AI率的网站有…

作者头像 李华