对话窗口`KeyDown`事件处理程序没有命中(C#)

时间:2016-12-23 16:11:49

标签: c# wpf event-handling key-events

我有一个KeyDown事件处理程序(由Visual Studio创建),用于关闭窗口的对话框:

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Escape)
    {
        this.DialogResult = false;
        this.Close();
    }
}

当我在程序中并按下Escape键时,对话框会转到主屏幕的背面而不是关闭它。我在这个功能上加了一个断点,它永远不会出现。

之前有人发生过这种情况吗?有谁知道解决方案?

1 个答案:

答案 0 :(得分:0)

我认为这个答案可能有所帮助: https://stackoverflow.com/a/980518/37899

基本上,如果您的对话框完全是空的并且没有聚焦控件,则不会引发KeyDown和Up事件。出于某种原因,只有当窗口中至少有一个可调焦的控件并且它集中在一起时,它们才会被提升。