.net - 检测整个窗口的箭头键-KeyDown

标签 .net winforms c#-4.0 keydown

我有一个WinForms表单(C#/。Net),它包含一个PictureBox,MenuStrip,Panel和两个Button控件。

我需要为整个窗口的箭头键检测KeyDown事件;即,当窗口位于前景中时,无论哪个子控件具有焦点,我都需要知道何时按下箭头键,并在发生时执行一些代码。

我不想为每个控件附加一个事件处理程序。有没有更好的办法?我该怎么做?

编辑:通过使用下面的答案建议的KeyPreview,我可以检测到其他键。无法检测箭头键。仅当表单中的按钮被禁用时,我才能检测到箭头键。否则,他们会来回集中注意力,而不触发事件。如何使用表单上的按钮检测箭头键?

最佳答案

重写ProcessCmdKey()方法以检测箭头键。

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
        if (keyData == Keys.Left) {
            Console.WriteLine("left");
            return true;
        }
        // etc..
        return base.ProcessCmdKey(ref msg, keyData);
    }

关于.net - 检测整个窗口的箭头键-KeyDown,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4378865/

相关文章:

c# - 增加 Google PubSub 的截止时间超时

c# - 代表用户发送电子邮件

vb.net - 如何阻止 DateTimePicker 显示今天的日期

c# - 滚动到 C# DataGridView 的底部

c# - 无法在 C# 中删除文件 - 未经授权的访问异常

fluent-nhibernate - Fluent nHibernate 启动时间慢

.net - LINQ 到 SQL 交叉应用

.net - WPF : Send KeyCode to Active Application

c# - 将鼠标点击位置转换为给定比例

c# - 如何删除在使用属性/字段将自身显示为字符串方面有所不同的重复代码?