【问题标题】:cefsharp and previewkeydown event not workingcefsharp 和 previewkeydown 事件不起作用
【发布时间】:2016-08-06 18:10:29
【问题描述】:

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

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

【问题讨论】:

    标签: c# cefsharp


    【解决方案1】:

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

    【讨论】:

    • 我尝试了选项 1 和 3,虽然我能够从拦截器获取鼠标事件,但由于某种原因我无法捕获任何键盘事件。话虽如此,选项 1 效果很好,谢谢
    • 选项 1 对我有用 - 谢谢 (chromiumWebBrowser.KeyboardHandler = new MyKeyboardHandler();)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 2014-05-07
    • 2023-03-20
    • 2020-01-06
    • 2016-08-29
    • 1970-01-01
    相关资源
    最近更新 更多