【发布时间】: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/…