【问题标题】:WPF windows forms host keyboard eventsWPF windows 窗体主机键盘事件
【发布时间】:2010-08-25 10:42:07
【问题描述】:

这可能是一个简单的问题,但我一直无法快速找到答案。

我有一个 WPF 应用程序,它有一个托管 GeckoFX 组件的 Windows 窗体控件(没关系)。

我想要做的是捕获 Windows 窗体控件内的按键事件,并为某些特定的组合键获取 WPF 控件的焦点。 如果我想从整个 WPF 应用程序窗口(甚至在 Windows 窗体控件中)捕获事件怎么办? 我尝试处理 KeyDown 事件和 PreviewKeyDown 事件,但无济于事。

我想知道这是否可行以及应该如何完成。如果需要,我可以发布一些代码。

【问题讨论】:

    标签: c# wpf winforms winforms-interop


    【解决方案1】:

    即使在表单上的 KeyDown 也应该适用于非特殊键(如箭头键)。使用 PreviewKeyDown 捕获这些,或使用 this solution

    对于 GeckoWebBrowser,我不得不使用 PreviewKeyDown。另外,我添加了一行,这样它就不会在设计模式下中断:

    private void webBrowser1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) {
      if (DesignMode) return;
      if (!e.IsInputKey && e.Control && e.KeyCode == Keys.S) {
        DoStuff();
        return;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-04-28
      • 2012-01-26
      • 2011-10-29
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      相关资源
      最近更新 更多