cefsharp和Previewkeydown事件不起作用

Jar*_*kin 6 c# cefsharp

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

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

ama*_*and 7

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只是一个包装。