问题描述
我试图在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)。