zoukankan      html  css  js  c++  java
  • WinForm中窗体控件的键盘事件KeyPress不响应

    WinForm中窗体控件的键盘事件KeyPress不响应

    今天在做一个C#的WinForm窗体的时候,需要在窗体的某个控件上响应用户的键盘事件。

    我在控件的事件属性页里面很简单的找到了KeyDown,KeyPress,KeyUp这几个鼠标事件,查看了一下说明:

    KeyDown:在首次按下某个键时发生

    KeyPress:在空间具有焦点且用户按下并释放某个键后发生

    KeyUp:在释放键时发生

    好吧,很明显KeyPress最符合要求么,可是,按了键盘上的Delete键老半天发现KeyPress竟然没有响应,断点一直进不去。试了一下控件其他两个事件KeyDown和KeyUp,是正常的。于是在网上找了找,找到一个答案,说是在需要控件响应KeyPress事件的时候,父窗体KeyPreview必须设置为True。

    尝试该方法后无效。

    试了一下键盘上的其他按键,好像KeyPress事件就只是相应普通的字母键,数字键,空格还有Backspace,其他的好像都不行。最后在网上找到了这样的解释:

    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 都不能捕获。

  • 相关阅读:
    简单工厂模式_C#_设计模式
    单例模式_C#设计模式
    快速排序_排序算法_算法
    关于缓存C#
    网络编程的4种IO模型
    一些自己总结
    驱动漏洞中的__try和ProbeForRead
    poj2318
    poj1113
    poj 1904
  • 原文地址:https://www.cnblogs.com/snsnetw/p/12381392.html
Copyright © 2011-2022 走看看