C#中如何获取方向键
重写ProcessCmdKey事件就可以获取到方向键,代码如下:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
label1.Text = keyData.ToString();
return base.ProcessCmdKey(ref msg, keyData);
}
效果如下:
说明:
Control.ProcessCmdKey 方法
参数
msg
类型:System.Windows.Forms.Message%
通过引用传递的 Message,它表示要处理的窗口消息。
keyData
类型:System.Windows.Forms.Keys
Keys 值之一,它表示要处理的键。
返回值
类型:System.Boolean
如果字符已由控件处理,则为 true;否则为 false。
备注
在消息预处理过程中调用此方法,以处理命令键。 命令键是始终比常规输入键具有优先权的键。 命令键的示例包括快捷键和菜单快捷方式。 此方法必须返回 true,以指示它已经处理完命令键,或者 false,以指示该键不是命令键。 仅当控件承载在 Windows 窗体应用程序中或充当 ActiveX 控件时,才调用此方法。
ProcessCmdKey 方法首先确定控件是否有 ContextMenu,如果有,则允许 ContextMenu 处理命令键。 如果命令键不是菜单快捷方式,且控件有父级,那么该键传递到父级的 ProcessCmdKey 方法。 净效果是命令键在控件层次结构中向上“冒”。 除了用户按下的键外,键数据还指示哪些(如果有的话)修改键与该键同时按下。 修改键包括 Shift、Ctrl 和 Alt 键。
对继承者的说明
在派生类中重写 ProcessCmdKey 方法时,控件应返回 true 以指示它已处理该键。 对于未由该控件处理的键,应返回调用基类的 ProcessCmdKey 方法所得的结果。 控件很少需要重写此方法(即使有的话)。