winform键盘事件KeyPress(winform键盘控件)

fangcloud 968 2022-07-06

本文转载自网络公开信息

如果让窗体接受键盘事件,即如何启动Form1_KeyPress事件

Form.KeyPreview属性,如果窗体将接收所有键事件,则为   true;如果窗体上当前获取焦点的控件接收键事件,则为   false,默认值的值是false。你可以将其设为true。

Windows窗体通过引发键盘事件来处理键盘输入以响应Windows消息,大多数Windows窗体应用程序都通过处理键盘事件来以独占方式处理键盘输入。

1.按键的类型

Windows窗体将键盘输入标识为由按位Keys枚举表示的虚拟键代码。使用Keys枚举,可以综合一系列按键以生成单个值,这些值与 WM_KEYDOWN和WM_SYSKEYDOWNWindows消息所伴随的值相对应。另外,程序开发人员可通过处理KeyDown或KeyUp 事件来检测大多数物理按键操作。字符键是Keys枚举的子集,它们与WM_CHAR和WM_SYSCHAR Windows消息所伴随的值相对应,如果通过组合按键得到一个字符,则可以通过处理KeyPress事件来检测该字符。

2.键盘事件的顺序

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

用户按“a”键,该键将被预处理和调度,而且会发生KeyDown事件。 用户按住“a”键,该键将被预处理和调度,而且会发生KeyPress事件。 用户松开“a”键,该键将被预处理和调度,而且会发生KeyUp事件。 3.键的预处理

像其他消息一样,键盘消息是在窗体或控件的WndProc方法中处理的。窗体或控件在处理键盘消息之前,PreProcessMessage方法会调用一个或多个方法,这些方法可被重写以处理特殊的字符键和物理按键。

其实我们按下一个键时,KeyDown 和KeyPress 是都要发生的,而且两个人看上去没有什么区别。但是其实两者还是有实质的区别的。

例如在一个多行文本框里面输入字符,为什么我们没有定义一个键盘响应事件,但是键盘却响应了,把字符输入到了文本框呢?其实我觉得因为这个事件就是系统默认的一个消息响应,它就是KeyPress 。如果你自己还给KeyPress 定义了自己的响应的话,那么程序会先执行你定义的程序,然后完成系统要求的显示字符事件的响应过程,但是如果你在自己定义KeyPress 事件如:

private void _TextBox_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

e.Handled=true ;

那么系统要求的显示字符响应过程就不会被执行,原因就是这个语句的意思就是这个消息响应已经完成。但是如果你在KeyDown ,KeyUp 里面加这条语句,显示字符串等消息还是会发生,这说明系统的显示字符串和KeyDown ,KeyUp 是没有关系的,而对于回车和退格消息响应则是由KeyDown 控制,增加那条语句则回车换行不会执行,退格响应也不会执行。

综上:要屏蔽键盘上的一个字符的输入,可以在KeyPress 里面进行增加语句,而要屏蔽回车和退格则可以在KeyDown 里面进行增加语句。

/*********************/

键事件按下列顺序发生: KeyDown KeyPress KeyUp KeyDown触发后,不一定触发KeyUp,当KeyDown 按下后,拖动鼠标,那么将不会触发KeyUp事件。 定义KeyDown:在控件有焦点的情况下按下键时发生。 KeyPress:在控件有焦点的情况下按下键时发生。(下面会说和KeyDown 的区别) KeyUp:在控件有焦点的情况下释放 键时发生。 KeyPress 和KeyDown 、KeyPress之间的区别KeyPress主要用来捕获数字(注意:包括Shift+数字的符号 )、字母(注意:包括大小写 )、小键盘等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符 KeyDown 和KeyUp 通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键) KeyPress 只能捕获单个字符 KeyDown 和KeyUp 可以捕获组合键。 KeyPress 可以捕获单个字符的大小写 KeyDown和KeyUp 对于单个字符捕获的KeyValue 都是一个值,也就是不能判断单个字符的大小写。 KeyPress 不区分小键盘和主键盘的数字字符。 KeyDown 和KeyUp 区分小键盘和主键盘的数字字符。 其中PrScrn 按键KeyPress、KeyDown和KeyUp 都不能捕获。

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表亿方云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱daifeng@360.cn 处理。
上一篇:12C grid 磁盘要求(12cm的男生属于大还是小)
下一篇:存储过程-盘点(查找存储过程)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~