cefsharp 和 previewkeydown 事件不起作用
cefsharp and previewkeydown event not working
这可能是一个简单的问题,但我有一个正在加载 ChromiumWebBrowser 控件 (CefSharp) 的 winforms 应用程序,我不知道如何捕获关键预览事件,因为它们都被控件吞没了。
将处理程序附加到浏览器控件的 PreviewKeyDown 事件的标准不起作用。有已知的解决方法吗?
CEF
在它自己的消息循环中是 运行,因此标准事件不起作用。
第一个最简单的选择是实现 IKeyboardHandler
,您可以查看 CefSharp
源代码以获得更详细的示例(如果需要,可以将消息转发给父级 window ).
第二个 运行 和 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
只是一个包装。
这可能是一个简单的问题,但我有一个正在加载 ChromiumWebBrowser 控件 (CefSharp) 的 winforms 应用程序,我不知道如何捕获关键预览事件,因为它们都被控件吞没了。
将处理程序附加到浏览器控件的 PreviewKeyDown 事件的标准不起作用。有已知的解决方法吗?
CEF
在它自己的消息循环中是 运行,因此标准事件不起作用。
第一个最简单的选择是实现 IKeyboardHandler
,您可以查看 CefSharp
源代码以获得更详细的示例(如果需要,可以将消息转发给父级 window ).
第二个 运行 和 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
只是一个包装。