【问题标题】:How to mark F10 key as handled in CefSharp for WPF?如何将 F10 键标记为在 CefSharp for WPF 中处理?
【发布时间】:2019-01-11 13:36:07
【问题描述】:

我有一个与 CefSharp for WPF 中的密钥处理有关的问题。我实现了 IKeyboardHandler 接口,我的 ChromiumWebBrowser 将它用作 KeyboardHandler。主要逻辑在 OnPreKeyEvent 方法中,如果我的键被处理,则返回 true,否则返回 false。

问题是如果按下 F10 键,屏幕会失去焦点,因为 F10 是系统键并切换 Windows 菜单。如何让 CefSharp 知道不要将 F10 转发给操作系统进行处理,以便我的屏幕保持焦点?

在标准 WPF 中会有一个我可以设置为 true 的 e.Handled,但在这种情况下没有(根据文档,虽然返回值会这样做)。

【问题讨论】:

  • 只是一个问题:但是按下 F10 时是否调用了 OnPreKeyEvent
  • (如果没有,你可能需要一个钩子.... arrgghh!:stackoverflow.com/questions/35749505/…
  • @Stefan 是的,它被调用并且实现实际执行,由于此切换,只有偶数的 F10 按下不工作。我以前遇到过这个 SO 链接,但我不确定全局钩子是否真的是这个问题所需要的。在这种情况下,它不是关于快捷方式,而是关于系统键。
  • @Stefan 只是为了澄清:即使按下(即当切换打开时)也不会调用 OnPreKeyEvent
  • 有关背景信息,请参见 github.com/cefsharp/CefSharp/wiki/General-Usage#wpf-1。从ChromiumWebBrowser 继承并覆盖OnPreviewKey[Up|Down],并像处理任何标准WPF 事件一样处理按键。 github.com/cefsharp/CefSharp/blob/cefsharp/71/CefSharp.Wpf/…

标签: c# wpf chromium cefsharp


【解决方案1】:

正如 Alex Maitland 所说,这样做的方法是从 ChromiumWebBrowser 继承并覆盖 OnPreviewKeyUp 和 OnPreviewKeyDown 方法。在那里,您可以将 KeyEventArgs 标记为已处理。在这种情况下,不需要从 IKeyboardHandler 继承。

【讨论】:

    猜你喜欢
    • 2016-06-15
    • 2014-09-19
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多