这是我的代码。
public partial class MainScreen : Form
{
public MainScreen()
{
InitializeComponent();
//Initializing the browser in class Browser
Browser brow = new Browser();
//Hiding the user control that contains the browser UI
this.browserPanel1.Visible = false;
//Adding the browser to my main form's user control
this.browserPanel1.Controls.Add(brow.chromeBrowser);
}
我有一个按钮,该按钮具有显示最初隐藏的用户控件的功能。
private void button1_Click(object sender, EventArgs e)
{
this.browserPanel1.Visible = true;
}
我在一分钟后单击此按钮。 通常,在通过单击按钮使用户控件再次可见之前,网站应该已完全加载。但是,当我单击该按钮时,浏览器所花费的时间与当前所创建的时间相同。为什么网站未预加载到浏览器中?
//浏览器类
class Browser
{
public ChromiumWebBrowser chromeBrowser;
public Browser()
{
CefSettings settings = new CefSettings();
Cef.Initialize(settings);
chromeBrowser = new ChromiumWebBrowser("https://google.com");
chromeBrowser.Dock = DockStyle.Fill;
}
}
答案 0 :(得分:1)
在github上也有类似的讨论:CefWebBrowser display dependent
由于未在隐藏面板上添加ChromiumWebBrowser,并且未在隐藏面板上创建浏览器,因此未加载URL(由于Winforms以不同的方式创建控件)。另一方面,Load
方法将等待直到创建浏览器。但是有一种特殊的.CreateControl
方法可以用作解决方法。
考虑到github上的讨论,您应该将chromeBrowser.CreateControl();
添加到Browser构造函数中,因此Browser类应如下所示:
class Browser
{
public ChromiumWebBrowser chromeBrowser;
public Browser()
{
CefSettings settings = new CefSettings();
Cef.Initialize(settings);
chromeBrowser = new ChromiumWebBrowser("https://google.com");
chromeBrowser.Dock = DockStyle.Fill;
chromeBrowser.CreateControl();
}
}