KeyEvents仅在首次交互后引发

时间:2014-12-01 19:02:57

标签: c# wpf keyboard webbrowser-control

我有一个WPF MainWindow并尝试对某个组合键(CTRL + F4)作出反应。我为测试目的注册了以下方法:

private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
    Log.AsInfo("PreviewKeyDown");
}

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    Log.AsInfo("KeyDown");
}

private void Window_KeyUp(object sender, KeyEventArgs e)
{
    Log.AsInfo("KeyUp");
}

private void Window_PreviewKeyUp(object sender, KeyEventArgs e)
{
    Log.AsInfo("PreviewKeyUp");
}

疯狂的是,这些方法仅在我第一次与应用程序交互后触发:

它是如何工作的:

  1. 我启动了该应用程序
  2. 我在键盘上输入CTRL + F4
  3. 什么都没发生
  4. 工作原理:

    1. 我启动了该应用程序
    2. 我点击了一个没有任何功能的随机菜单项
    3. 我在键盘上输入CTRL + F4
    4. 一切正常,日志信息写成
    5. 有什么想法吗?我甚至无法调试这种情况,因为首先没有调用任何处理程序方法。我甚至在MainWindow构造函数中尝试了this.Focus(),但这也无济于事。

1 个答案:

答案 0 :(得分:0)

找到解决方案:

我使用的浏览器控件是EO.WebBrowser。似乎这个浏览器控件每次第一次都会吞下密钥交互。我通过将所需的功能绑定到WebBrowser控件的热键(如here所述)来实现快捷方式组合。所以它更像是第三方而不是WPF问题。