在新的浏览器元素加载页面后执行tab-changed

时间:2012-02-09 15:41:39

标签: c# browser tabs favicon selectedindexchanged

感谢 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元素?

0 个答案:

没有答案