【发布时间】:2016-01-21 04:37:48
【问题描述】:
我有一个允许创建新选项卡的选项卡控件。每个新选项卡上都有一个 Web 浏览器控件 CEFSharp。创建新选项卡时,不会显示先前打开的选项卡;这就是我们想要的。
但是,新创建的标签页上的浏览器只是添加到标签页中,只是部分运行……直到标签页显示出来才进入加载状态。
这里是Tabpage的创建代码:
private void AddNewBrowser()
{
Log("Adding New Tab and Browser");
UiBrowser browser = new UiBrowser();
TabPage tp = new TabPage();
tp.Controls.Add(browser);
customTabControl1.TabPages.Add(tp);
}
UiBrowser 是一个 UserControl,其中包含 CEFSharp 浏览器控件以及一些额外的 UI。
这是浏览器本身的启动代码。
private void UiBrowser_Load(object sender, EventArgs e)
{
Execute();
}
private void Execute()
{
webBrowser = new ChromiumWebBrowser("http://google.co.uk")
{
Dock = DockStyle.Fill,
Text = "Loading...",
Tag = Tag
};
webBrowser.TitleChanged += Browser_TitleChanged;
webBrowser.AddressChanged += Browser_AddressChanged;
webBrowser.ConsoleMessage += Browser_ConsoleMessage;
webBrowser.LoadingStateChanged += Browser_LoadingStateChanged;
webBrowser.StatusMessage += Browser_StatusMessage;
browserPanel.Controls.Add(webBrowser);
Application.DoEvents();
}
为了清晰起见,代码已被简化,我还没有在 SO 或其他地方找到解决此问题的方法。
问题:
如何让浏览器控件在后台加载网页?也就是说,控件打开的TabPage 不会向用户显示。
【问题讨论】:
标签: c# winforms tabs user-controls cefsharp