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

  • 相关阅读:
    记一则玄乎奇玄的ADG误删自救事件
    ORACLE 日常信息查询sql
    Linux脚本判断磁盘容量
    postgresql数据库创建触发器记录表修改时间
    centos7关闭防火墙
    centos7 安装mysql5.7(二进制tar包方式)
    Oracle11G RMAN-06214: Datafile Copy /u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_cpbd.f
    SQLPlus中set命令
    oradehub命令
    记一报错解决:ORA-00845: MEMORY_TARGET not supported on this system
  • 原文地址:https://www.cnblogs.com/snsnetw/p/12381392.html
Copyright © 2011-2022 走看看