cefsharp和previewkeydown事件无法正常工作

时间:2016-04-14 23:31:51

标签: c# cefsharp

这可能是一个简单的问题,但我有一个winforms应用程序正在加载ChromiumWebBrowser控件(CefSharp),我无法弄清楚如何捕获关键预览事件,因为它们都被控件吞噬。

将处理程序附加到浏览器控件的PreviewKeyDown事件的标准不起作用。有没有已知的解决方法?

1 个答案:

答案 0 :(得分:4)

CEF在其自己的消息循环中运行,因此标准事件不起作用。

第一个最简单的选项是实现IKeyboardHandler,您可以查看CefSharp源代码以获取更详细的示例(如果需要,可以将消息转发到父窗口)。

第二次使用settings.MultiThreadedMessageLoop = false运行,并在应用程序空闲时调用Cef.DoMessageLoopWork(),这会将CEF集成到与主应用程序相同的消息循环中。同样,源包含示例,请参阅https://github.com/cefsharp/CefSharp/blob/cefsharp/49/CefSharp.WinForms.Example/Program.cs#L63

第三个选项是挂钩CEF消息循环,请参阅https://github.com/cefsharp/CefSharp/blob/cefsharp/49/CefSharp.WinForms.Example/ChromeWidgetMessageInterceptor.cs以获取示例

CEF = Chromium Embedded Framework - CefSharp只是一个包装器。