我有一个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/