感谢 JP Hellemons ,我的浏览器现在可以加载已加载页面的图标。
这样,我就可以将Windows窗体的图标更改为网站的图标。
现在,当用户切换标签时,我想更改表单图标,表单图标始终与可见网站相同。
我制作了一些代码并将其放入 SelectedIndexChanged-event 。
但是,当我打开一个新选项卡时,我的代码会切换选项卡,在选项卡内创建一个浏览器元素,然后导航到主页。
当我使用我的代码时,这会导致错误,因为favicon方法还无法找到新的浏览器:s
以下是我的代码:
a)Retreiving the
favicon
b)更改表单图标(我已将此代码放入
SelectedIndexChanged-event方法)
private void tabs_SelectedIndexChanged(object sender, EventArgs e) { // tabs is the TabControl
this.Icon = favicon(GetActiveBrowser().Url);
}
// this code returns the active WebBrowser-element
private WebBrowser GetActiveBrowser() {
return (WebBrowser)tabs.SelectedTab.Controls[0];
}
c)当我按btnNewTab
时,创建新标签的代码private void btnNewTab_Click(object sender, EventArgs e) {
// new tab
TabPage page = new TabPage("... Loading ...");
tabs.TabPages.Add(page);
this.Icon = Properties.Resources.loading1;
tabs.SelectedTab = page;
// include browser
WebBrowser browser = new WebBrowser();
browser.Parent = page;
browser.Dock = DockStyle.Fill;
browser.Visible = true;
browser.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.browser_DocumentCompleted);
browser.StatusTextChanged += new EventHandler(browser_StatusTextChanged);
browser.DocumentTitleChanged += new EventHandler(browser_DocumentTitleChanged);
browser.ProgressChanged += new WebBrowserProgressChangedEventHandler(browser_ProgressChanged);
browser.ContextMenuStrip = contextBrowser;
navigate(Properties.Settings.Default.BrowserHome);
} // open URL in new tab
问题很简单,答案似乎更难:
在寻找favicon之前,如何让表单等待,直到创建WebBrowser元素?