自定义控件里的keydown方法无法捕获所有的按键消息的处理方法
来源:互联网 发布:音效app软件 编辑:程序博客网 时间:2024/05/21 07:15
在一些控件里的keydown方法,没有办法捕获所有的按键消息
比如自己写一个窗体控件库,继承了UserControl
但是没有办法捕获一些键,比如方向键等
所以必须重载 processDialogkey 方法
processDialogkey 的描述 在msdn中是这样的
在消息预处理过程中调用此方法,以处理对话框字符,比如 Tab、Return、Esc 和箭头键。只有当 IsInputKey方法指示控件未在处理该键时,才调用此方法。ProcessDialogKey 方法只是将字符发送给父级的ProcessDialogKey 方法,或者,在该控件没有父级的情况下返回 false。Form 类重写此方法来执行对话框键的实际处理。仅当控件承载在 Windows 窗体应用程序中或充当 ActiveX 控件时,才调用此方法。
给继承者的说明 在派生类中重写 ProcessDialogKey 方法时,控件应返回 true 以指示它已处理该键。对于未由该控件处理的键,应返回调用基类的 ProcessDialogChar 方法所得的结果。控件很少需要重写此方法(即使有的话)。
它的返回值表示
返回值
如果键已由控件处理,则为 true;否则为 false。
所以想捕获方向键 要加上如下重载方法
protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Up || keyData == Keys.Down || keyData == Keys.Left || keyData == Keys.Right)
return false;
else
return base.ProcessDialogKey(keyData);
}
在keydown里就能接收到方向键的信息了
其实,在ProcessDialogKey重写的时候,就可以做信息处理的操作了
而不必再keydown方法里写
- 自定义控件里的keydown方法无法捕获所有的按键消息的处理方法
- 自定义控件里的keydown方法无法捕获所有的按键消息的处理方法1
- 关于捕获消息的方法
- 按键消息的处理
- salesforce里,以自定义对象发出消息的方法
- s60平台下捕获全局按键的方法
- 通过spring的aop注解实现所有方法异常的捕获处理,sqlite SQLITE_BUSY异常
- android未捕获异常的处理方法
- 091109(星期一) 学习控件对消息的处理方法
- duilib中CListUI控件消息处理的方法与技巧
- vc自定义消息的方法
- VC自定义消息的方法
- C++ 自定义消息的方法
- WinCE/Mobile 下的自定义消息处理方法
- winform处理特殊按键的好方法
- QT 键盘 很多按键的处理方法
- C#里的方向键消息捕获
- C#里的方向键消息捕获
- 显示一个提示框,几秒后显示框自动消失
- Mybatis学习之实现关联数据的查询(4)
- CAS服务端的mysql数据库查询认证机制
- iOS基础:description方法重写
- github史上最全教程
- 自定义控件里的keydown方法无法捕获所有的按键消息的处理方法
- 安装keepalive错误:types.h:14: error: conflicting types for ‘fd_set’
- Butter Knife 7.0.1 使用方法
- Java基础知识:java.util.Collection集合
- 算法思想
- ContentProvider和Uri详解
- c++ STL List查找遍历及各成员函数用法详细介绍
- Mac 系统上配置FFmpeg
- svn 开发忽略设置