一、三个键盘触发事件
KeyDown: 在控件有焦点的情况下按下键时发生。
(用到的是 KeyChar)
KeyPress: 在控件有焦点的情况下按住键时发生。
(用到的是 KeyCode 和 KeyValue)
KeyUp: 在控件有焦点的情况下释放键时发生。
(用到的是 KeyCode 和 KeyValue)
触发顺序为:KeyDown-->KeyPress-->KeyUp
二、KeyPress 和KeyDown 、KeyPress之间的区别:
1).KeyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符。
KeyDown 和KeyUp 通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键)
2).KeyPress 只能捕获单个字符。
KeyDown 和KeyUp 可以捕获组合键。
3).KeyPress 可以捕获单个字符的大小写。
4).KeyDown和KeyUp 对于单个字符捕获的KeyValue 都是一个值,也就是不能判断单个字符的大小写。
5).KeyPress 不区分小键盘和主键盘的数字字符。
KeyDown 和KeyUp 区分小键盘和主键盘的数字字符。
6).其中PrScrn 按键KeyPress、KeyDown和KeyUp 都不能捕获。
三、KeyData、KeyCode、KeyValue和KeyChar的区别
KeyCode:键,如Enter就会用到 KeyCode=Keys.Enter
KeyValue:值,如Enter就会用到 KeyValue=13
KeyChar:获取键盘的ASCII码值(查找ASCII表即可)
KeyData:
3.1 KeyCode、KeyValue区别
表1:字母和主键盘上的数字
表2:右侧数字键盘,F1按键
表3:控制键键码值(keyCode)
3.2 KeyCode、KeyChar区别
KeyChar是在keyPressEvent里面获得的char类型返回值,
KeyValue取得KeyDown 或KeyUp事件的键盘值,返回的整形。