使用Winform的Cefsharp:当用户将焦点更改到另一个节点时,从未调用OnFocusedNodeChanged

问题描述

我试图在Cefsharp和Winform需要时使用OnFocusedNodeChanged打开虚拟键盘,但是从未调用此方法。我用错了吗?

代码是:

class CMSRenderBrowser : IRenderProcessMessageHandler
{
    public void OnFocusedNodeChanged(IWebBrowser chromiumWebBrowser,IBrowser browser,IFrame frame,IDomNode node)
    {
        var message = node == null ? "lost focus" : node.ToString();
        Console.WriteLine("OnFocusedNodeChanged() - " + message);
    }

    public void OnContextCreated(IWebBrowser chromiumWebBrowser,IFrame frame)
    {
    }

    public void OnContextReleased(IWebBrowser chromiumWebBrowser,IFrame frame)
    {
    }


    public void OnUncaughtException(IWebBrowser chromiumWebBrowser,JavascriptException exception)
    {
    }
}

这是.cs的主要形式:

public Form1()
    {
        InitializeComponent();
        ChromiumWebBrowser browser = new ChromiumWebBrowser("www.google.com");
        browser.RenderProcessMessageHandler = new CMSRenderBrowser();

        this.Controls.Add(browser);
        
    }

解决方法

由于它涉及将消息从渲染过程发送到浏览器过程,因此默认情况下未启用。您必须在调用Cef.Initialize之前通过将CefSharpSettings.FocusedNodeChangedEnabled设置为true来启用它(如果您自己没有调用Cef.Initialize,那么在创建第一个ChromiumWebBrowser实例之前)。>

//This must be set before Cef.Initialized is called
CefSharpSettings.FocusedNodeChangedEnabled = true;

应该对文档进行更新以反映此要求(如果有时间,可以随时向https://github.com/cefsharp/CefSharp提交PR)。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...