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++暂停黑窗口
    【python爬虫】scrapy入门6-生成多个spider
    【python爬虫】scrapy入门5--xpath等后面接正则
    python基础:list与string互转
    【python爬虫】scrapy实战1--百万微博任性采集
    【python爬虫】scrapy入门4--添加cookies
    【python爬虫】scrapy入门2--自定义item
    【python爬虫】scrapy入门1--环境搭建
    sklearn学习:为什么roc_auc_score()和auc()有不同的结果?
  • 原文地址:https://www.cnblogs.com/snsnetw/p/12381392.html
Copyright © 2011-2022 走看看