C#-关于捕获键盘信息的processDialogkey方法,processCmdkey

本文详细介绍了如何通过重写WinForms控件的ProcessDialogKey方法来捕获并处理键盘事件,特别是方向键。当keydown方法无法捕获所有按键时,可以利用ProcessDialogKey进行补充。在重载该方法时,判断并处理特定键,如方向键,然后决定是否传递给父级处理。这样,即使在自定义控件中,也能确保方向键等特殊键的正确响应。
摘要由CSDN通过智能技术生成

关于捕获键盘信息的processDialogkey方法

spu20134823091

转载自:http://blog.csdn.net/lucifinil_s/article/details/6318189

在一些控件里的keydown方法,没有办法捕获所有的按键消息

比如自己写一个窗体控件库,继承了UserControl

但是没有办法捕获一些键,比如方向键等

所以必须重载 processDialogkey 方法

processDialogkey 的描述 在msdn中是这样的

 

在消息预处理过程中调用此方法,以处理对话框字符,比如 Tab、Return、Esc 和箭头键。只有当 IsInputKey 方法指示控件未在处理该键时,才调用此方法。ProcessDialogKey 方法只是将字符发送给父级的 ProcessDialogKey 方法,或者,在该控件没有父级的情况下返回 falseForm 类重写此方法来执行对话框键的实际处理。仅当控件承载在 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方法里写

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值