我正在尝试将嵌入式浏览器用于我的WinForms应用程序。我使用CefSharp ChromiumWebBrowser,它工作得很好。但是,CEFSharp需要Visual C ++ 2013或Visual C ++ 2008 ......我认为它是一个复杂的依赖项。我正在创建一个没有依赖环境的便携式应用程序。
我发现另一个类似CefSharp的库也使用Chrominum,名为ChromiumFX(访问:https://bitbucket.org/chromiumfx/chromiumfx)。该库使用.Net Framework 3.5(Windows 7中默认可用),无需安装Visual C ++。它适用于我的应用程序。
但我找不到用这个库创建多标签应用程序的方法。这是我试图做的:
private void LifeSpanHandler_OnBeforePopup(object sender, CfxOnBeforePopupEventArgs e)
{
e.SetReturnValue(true);
tabPage2.InvokeOnUiThreadIfRequired(() =>
{
ChromiumWebBrowser b = new ChromiumWebBrowser(e.TargetUrl);
b.Dock = DockStyle.Fill;
tabPage2.Controls.Add(b);
});
}
InvokeOnUiThreadIfRequired是一种扩展方法:
public static void InvokeOnUiThreadIfRequired(this Control control, Action action)
{
if (control.InvokeRequired)
{
control.BeginInvoke(action);
}
else
{
action.Invoke();
}
}
但是应用程序错误和程序崩溃了。
另一件事,当我创建一个新的ChromiumWebBrowser实例时,我希望它与另一个实例隔离,这意味着不要使用相同的cookie,与任何实例的会话(私有浏览器)。在CefSharp中,只需为新实例创建一个新的RequestContext:
webbrowser.RequestContext = new RequestContext();
但是在ChromiumFX中,我找不到任何办法!
有人帮助我吗?谢谢你的帮助!