C#里的方向键消息捕获
来源:互联网 发布:手机淘宝购物车 编辑:程序博客网 时间:2024/05/16 06:17
KeyDown,KeyPress,KeyUp
其中非字符键不会引发 KeyPress 事件;但非字符键却可以引发 KeyDown 和 KeyUp 事件。
要仅在窗体级别处理键盘事件并且不允许其他控件接收键盘事件,请将窗体的 KeyPress 事件处理方法中的 KeyPressEventArgs.Handled 属性设置为 true。
那么,KeyPress只能处理数字键了。
KeyDown处理的键的范围要更广泛一些,但是一些特殊键,如Tab,ESC,方向键却是
它所不能处理的了。
按照MSDN上的描述:
某些键,如 Tab、Return、Esc 和箭头键,由控件自动处理。为使这些键引发 KeyDown 事件,必须在窗体上的每个控件中重写 IsInputKey 方法。
如果要让窗体接收方向键事件,必须重写IsInputKey方法了。不过,实际上不仅仅
是重写这个方法,还有别的办法可以适用。下面是一个示例。
protected override bool ProcessDialogKey( Keys keyData)
{
switch (keyData)
{
case Keys.Left:
curBlock.left();
break;
case Keys.Right:
curBlock.right();
break;
case Keys.Up:
curBlock.rotate();
break;
case Keys.Down:
curBlock.down();
break;
}
return true;
}
除了这点之外,还有一点需要注意,因为窗口默认情况下是不对键盘事件响应的,
所以需要设置它的Property KeyPreview为true。这个设置通过代码或者直接在设计
窗口设置都可以。
如上总结一下:
一是要保证KeyPreview性质为true
二是要覆盖控件(这里是Form)的ProcessDialogKey方法。这个方法当然是针对方向键而言的,如果是命令键,就覆盖ProcessCmdKey方法。
FROM:http://www.cnblogs.com/stublue/archive/2010/08/31/1814076.html
- C#里的方向键消息捕获
- C#里的方向键消息捕获
- C#里的方向键消息捕获
- C#里的方向键消息捕获
- C# 通过代码捕获键盘方向键操作
- C#捕获消息
- c# 捕获的异常写到日志里
- 捕获消息的方法代码 - C# WinCE/WM开发
- 自定义控件里的keydown方法无法捕获所有的按键消息的处理方法
- 自定义控件里的keydown方法无法捕获所有的按键消息的处理方法1
- VC里辨别方向键
- 捕获控制台程序的消息
- 关于捕获消息的方法
- c#的异常捕获
- 群里的消息
- 群里的消息
- java 捕获线程里抛出的异常
- C# 捕获未处理的异常
- Java相关文章
- C++中引用和指针的区别
- OpenMAX IL介绍与其体系
- ubuntu 12.04 如何设置和优化开机启动的程序
- 未抛出的原因是在catch中使用了return语句,导致异常无法抛出insert*方法之外
- C#里的方向键消息捕获
- IOS推送机制与实现详解
- Python - 文本处理模块
- 新的内存分配
- 一个box2d中的工具类,拿过来直接用的那种
- linu 下 apache 安装
- 简单的http抓包(微信公众网页登录模拟)
- 这个请求被忽略
- [Ext JS 4] Extjs 图表 Legend(图例)的分行与分列显示