如何解决使用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)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。