Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Cefsharp with Winform:OnFocusedNodeChanged在用户将焦点更改为其他节点时从未调用_C#_Winforms_Cefsharp_Chromium Embedded - Fatal编程技术网

C# Cefsharp with Winform:OnFocusedNodeChanged在用户将焦点更改为其他节点时从未调用

C# Cefsharp with Winform:OnFocusedNodeChanged在用户将焦点更改为其他节点时从未调用,c#,winforms,cefsharp,chromium-embedded,C#,Winforms,Cefsharp,Chromium Embedded,我尝试在Cefsharp和Winform需要时使用OnFocusedNodeChanged打开虚拟键盘,但从未调用此方法。我用错了 代码是: class CMSRenderBrowser : IRenderProcessMessageHandler { public void OnFocusedNodeChanged(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, IDomNode node) {

我尝试在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, IBrowser browser, IFrame frame)
    {
    }

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


    public void OnUncaughtException(IWebBrowser chromiumWebBrowser, IBrowser browser, IFrame frame, JavascriptException exception)
    {
    }
}
这是主要形式。cs:

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

        this.Controls.Add(browser);
        
    }

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

//必须在调用Cef.Initialized之前设置此值
CefSharpSettings.FocusedNodeChangedEnabled=true;

应更新文档以反映此要求(如果有时间,请随时向提交PR)。

哦,谢谢。关于最后一点澄清:我想知道这是否会降低用户体验。不太可能,与Chromium内部发送的消息数量相比,发送的消息数量将是杯水车薪。您是否需要手动显示虚拟键盘?您在处理内置虚拟键盘时是否遇到问题?