感谢JP Hellemons ,我的浏览器现在能够加载已加载页面的图标。
这样,我可以将 Windows 窗体的图标更改为网站的图标。
现在我想在用户切换选项卡时更改我的表单图标,以使表单图标始终与可见站点相同。
我编写了一些代码并将其放入SelectedIndexChanged-event 中。
但是,当我打开一个新选项卡时,我的代码会切换选项卡,在选项卡内创建一个浏览器元素,然后导航到主页。
当我使用我的代码时,这会导致错误,因为 favicon-method 还找不到新的浏览器:s
这是我的代码:
a)检索图标
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
问题很简单,答案似乎更难:
我怎样才能让我的表单等到创建 WebBrowser 元素之后再寻找 favicon?