700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【c#】键盘事件(keypress keydown keyup)

【c#】键盘事件(keypress keydown keyup)

时间:2024-02-01 18:34:08

相关推荐

【c#】键盘事件(keypress  keydown keyup)

【前言】

最近小编在学习c#视频的时候遇到了小小的阻力,对于键盘的keydown,keyup,keypress事件不是很理解,有一点小小的强迫症,让我们对他们进行了一段研究,终于有一个进展,但是仅仅代表自己的个人观点啦!

【内容】

1、键事件按下列顺序发生:

keyDown→keyPress→keyUp

如一个控件可能出现3个与键盘相关的事件,下面是这些事件发生的常规顺序:

(1)用户按“a”键,该键将被预处理和调度,而且会发生keyDown事件

(2)用户按住“a”键,该键将被预处理和调度,而且会发生keyPress事件

(3)用户松开“a”键,该键将被预处理和调度,而且会发生keyUp事件

需要注意的是,keyDown触发后,不一定触发keyUp;当keyDown按下后,拖动鼠标,那么将不会触发KeyUp事件

2、定义

keyDown:在控件有焦点的情况下按下键时发生

keyPress:在控件有焦点的情况下按下键时发生

keyUp:在控件有焦点的情况下释放键

3、keyDown、keyPress、keyPress的区别

(1)keyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了F1-12、Shift、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符

keyDown和keyUp通常可以捕获键盘除PrScm所有按键(这里不讨论特殊键)

(2)keyPress只能捕获单个字符,keyDown和keyUp可以捕获组合键

(3)keyPress可以捕获单个字符的大小写

(4)keyDown和keyUp对于单个字符捕获的keyValue都是一个值,不能判断单个字符的大小写

(5)keyPress不能区分主键盘和小键盘的数字字符

(6)其中PrScrn按键KeyPress、KeyDown和KeyUp都不能捕获

4、代码中的Keydown、keyPress、keyup

//发生顺序:KeyDown->KeyPress->KeyUp//所有的参数的各种信息都在Keys里自带=>自己查看//KeyCode、KeyData、KeyValue对于字母键只记录大写的值//没有KeyChar//必须先将KeyPreview的属性设置为trueprivate void Form1_KeyDown(object sender, KeyEventArgs e){if (e.Alt && e.Control && e.KeyCode == Keys.F2) {MessageBox.Show("You press the Alt and Ctrl and F2 buttons!");}if (e.KeyData == Keys.Up) {MessageBox.Show("You press the Up buttons!");}if (e.KeyValue == 27) {MessageBox.Show("You press the Esc buttons!");}}//只能返回一个字符的ASCII码//不能处理功能键、编辑键、组合键//KeyChar能区分大小写//KeyChar字存在于KeyPress中private void Form1_KeyPress(object sender, KeyPressEventArgs e){if (e.KeyChar == 65){MessageBox.Show("You press the A buttons!");}if (e.KeyChar == 97){MessageBox.Show("You press the a buttons!");}//KeyChar是不区分数字是否在大小哪个键盘的if (e.KeyChar == 48){MessageBox.Show("You press the 0 buttons!");}}//没有KeyCharprivate void Form1_KeyUp(object sender, KeyEventArgs e){//与KeyDown相似//小键盘的数字0if (e.KeyValue == 96){MessageBox.Show("You press the 0 buttons in keypad!");}//小键盘的数字0if (e.KeyCode == Keys.NumPad0){MessageBox.Show("You press the 0 buttons in keypad!");}//主键盘的数字0if (e.KeyCode == Keys.D0){MessageBox.Show("You press the 0 buttons in primary keyboard!");}}

【小结】

在winform程序中,经常会用到这几个事件用于控制数字输入,按键动作等操作,但一直没有完全弄清楚他们之间的区别和练习,到底什么时候用哪一个事件合适,以上便是对于这些内容做了一个小小的总结,也是便于以后糊涂的时候有迹可循

如有不同见解,欢迎指出,感谢您的阅读

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。