如何在Window的所有控件中监听键盘事件?

时间:2018-10-12 09:40:11

标签: c# wpf events keyboard keydown

我必须在Window中监听键盘事件,但是如果我使用以下代码:

 MyWindow.KeyDown += new KeyEventHandler(MainWindow_KeyDown);

我没有在其他控件(例如文本框)内触发事件。如何从ALL控件获取事件并停止将事件传播到其原始控件?

编辑

我尝试了以下代码:

EventManager.RegisterClassHandler(typeof(Window), Window.KeyDownEvent, new KeyEventHandler(MainWindow_KeyDown));

我在大多数情况下都可以工作,但是例如当我在文本框中时,它没有获得HOME键。

1 个答案:

答案 0 :(得分:2)

查看PreviewKeyDown

this.PreviewKeyDown += MainWindow_PreviewKeyDown;

事件处理程序:

private void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e)
{
     // do some stuff
     e.Handled = true // Stops propagating the event
}