news 2026/6/20 11:35:33

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/6/19 17:29:58

XGW-9000系列高端新能源电站边缘网关软件架构设计

XGW-9000 系列高端新能源电站边缘网关作为新能源电站智能化的核心设备&#xff0c;承担着 “采集 - 计算 - 控制 - 协同” 一体化功能。该产品定位于解决新能源场站设备协议异构、数据实时性差、网络可靠性低、智能调度难的核心痛点&#xff0c;服务于电站运营商、EPC 工程总承…

作者头像 李华
网站建设 2026/6/21 0:12:54

当你的产品万事俱备,却卡在“让用户知道”这一步

凌晨三点&#xff0c;你的代码刚刚跑通最后一个测试用例&#xff0c;产品DEMO完美无瑕。然而&#xff0c;比技术难题更让你失眠的&#xff0c;是另一个灵魂拷问&#xff1a;“如何让第一批真实用户涌进来&#xff1f;”这不是你一个人的困境。研究表明&#xff0c;超过60%的互联…

作者头像 李华
网站建设 2026/6/20 19:43:45

终极API流式响应优化指南:实现毫秒级实时数据处理

终极API流式响应优化指南&#xff1a;实现毫秒级实时数据处理 【免费下载链接】one-api OpenAI 接口管理&分发系统&#xff0c;支持 Azure、Anthropic Claude、Google PaLM 2、智谱 ChatGLM、百度文心一言、讯飞星火认知、阿里通义千问、360 智脑以及腾讯混元&#xff0c;可…

作者头像 李华
网站建设 2026/6/15 17:22:29

基于Java的安全生产培训认证智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ?安全生产培训认证智慧管理系统整合了多种功能模块&#xff0c;包括会员管理、培训计划与资源管理、考试及证书处理等。该系统不仅优化了传统模式下的繁琐操作流程&#xff0c;提高了工作效率和数据准确性&#xff0c;还引入智能分析工具辅助…

作者头像 李华
网站建设 2026/6/13 20:26:41

5步搞定Reddit视频批量制作:告别手动操作的终极效率指南

5步搞定Reddit视频批量制作&#xff1a;告别手动操作的终极效率指南 【免费下载链接】RedditVideoMakerBot Create Reddit Videos with just✨ one command ✨ 项目地址: https://gitcode.com/GitHub_Trending/re/RedditVideoMakerBot 还在为每天手动制作Reddit视频而头…

作者头像 李华
网站建设 2026/6/19 4:59:04

单目深度估计方法: 理论与实战视频课

高薪计算机视觉进阶指南&#xff1a;单双目视觉深度估计一站式通关 引言&#xff1a;深度估计——开启三维视觉世界的钥匙 在计算机视觉的黄金赛道上&#xff0c;深度估计技术正成为高薪岗位的核心竞争力。从自动驾驶的精准感知到AR/VR的沉浸体验&#xff0c;再到工业检测的毫…

作者头像 李华