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