在一些控件里的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方法里写

这样也可以

namespace writing
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == (Keys.Insert | Keys.Shift))
{
IDataObject data = Clipboard.GetDataObject();
string text = (string)data.GetData(DataFormats.UnicodeText);
MessageBox.Show(text);
}
return base.ProcessDialogKey(keyData);
}
}
}

转载于:https://www.cnblogs.com/1175429393wljblog/p/5106500.html

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

  1. 关于捕获键盘信息的processDialogkey方法2--具体应用

    自定义控件里的keydown方法无法捕获所有的按键消息的处理方法1(自定义控件里的keydown方法无法获取的键值如上下左右键等) 处理办法具体如下: 1.首先在自定义控件UserControl1中重 ...

  2. C语言捕获键盘敲击的方法kbhit

    </pre>C语言中捕获键盘敲击的方法</h1><blockquote style="margin:0 0 0 40px; border:none; paddi ...

  3. Js捕获地址栏信息,根据地址栏信息来判断是否要显示页面中的信息

    问题描述:Js捕获地址栏信息,根据地址栏信息来判断是否要显示页面中的信息 解决方法:使用window.location.href来判断地址栏中是否有要显示页面中某一区域的标识 function sel ...

  4. WPF 利用键盘钩子来捕获键盘,做一些不为人知的事情...完整实例

    原文:WPF 利用键盘钩子来捕获键盘,做一些不为人知的事情...完整实例 键盘钩子是一种可以监控键盘操作的指令. 看到这句话是不是觉得其实键盘钩子可以做很多事情. 场景 当你的程序需要一个全局的快捷键 ...

  5. sanf()、kbhit()、getch()获取键盘信息与peekMessage()获取鼠标信息

    C++语言获取键盘消息的几种方法 scanf()用户输入键盘信息 kbhit()与getch(),kbhit检测键盘是否按下,getch()获取键盘输入的信息 peekMessage()函数检测是否有 ...

  6. python编程midi键盘按键_Python中捕获键盘的方式详解

    python中捕获键盘操作一共有两种方法 第一种方法: 使用pygame中event方法 使用方式如下:使用键盘右键为例 if event.type = pygame.KEYDOWN and even ...

  7. js捕获键盘事件之keydown、keyup以及keypress

    js keyup.keypress和keydown事件都是有关于键盘的事件 当一个按键被pressed 或released在每一个现代浏览器中,都可能有三种客户端事件. keydown event k ...

  8. python 键盘钩子_WPF 利用键盘钩子来捕获键盘,做一些不为人知的事情...完整实例...

    原文:WPF 利用键盘钩子来捕获键盘,做一些不为人知的事情...完整实例 键盘钩子是一种可以监控键盘操作的指令. 看到这句话是不是觉得其实键盘钩子可以做很多事情. 场景 当你的程序需要一个全局的快捷键 ...

  9. 查询电脑服务器信息的具体方法

    查询电脑DNS服务器信息的具体方法 方法一: 1.首先需要打开"运行"窗口.在键盘中按 WIN键+R键即可打开"运行"窗口. 2.在打开的"运行&qu ...

最新文章

  1. AutoIt3(AU3)开发的智能驱动安装工具,用于系统封装,支持参数静默启动
  2. jQuery 的 serializeArray()、serialize() 方法
  3. vue $emit $on 非父子非兄弟组件传值
  4. python3 windows环境 安装加密库 crypto
  5. Python imp模块 实际使用中的坑
  6. RemoveError: ‘requests‘ is a dependency of conda and cannot be removed from
  7. WPF中的一些常用类型转换
  8. 【php-laravel框架】第三节:利用composer安装laravel-admin开源管理系统
  9. java ojdbc 还需要装 oracle client 吗,ojdbc连接数据库
  10. android中tools的含义及用法
  11. 华为27asph是什么型号_华为手机原来还有这样神奇的操作?一键了解别人拿你手机做了什么...
  12. iPhone Objective-C EXC_BAD_ACCESS问题
  13. 今日头条首次公开算法原理(附全文详解)
  14. IPSEC 003 ---- IPSEC携手IKE,珠联璧合显神威
  15. MapInfo中MIF文件和MID文件的格式
  16. alpha对冲(股票+期货)
  17. linux java模拟器_在Android模拟器和Ubuntu上测试Linux驱动
  18. 劳易测BCB G40 H47 L030 - 条码带
  19. 四和能聚分析做直播带货的商家通常发布什么类型的短视频
  20. 山西票号的内部控制分析

热门文章

  1. python中的元类_python中的元类
  2. 极限学习机的matlab程序_新程序员七宗罪,新手别踩雷
  3. 三星 arm9 linux,基于arm9内核三星s3c2410平台下linux四键按键驱动程序
  4. css表格文本居中的指令,CSS似乎无法在表格单元中居中文本
  5. python采用Basemap绘制完美中国地图(包括绘制边界框,随机点等)
  6. 嵌入式系统降低功耗的设计技术
  7. 小R SLAM机器人树莓派3b+ ROS kinetic 环境搭建笔记
  8. P2216 理想的正方形 单调队列 (二维)
  9. Python 打印行列控制(API:pandas.set_option())
  10. 二、如何保存MNIST数据集中train和test的图片?