0

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 要素が作成されるまでフォームを待機させるにはどうすればよいですか?

4

0 に答える 0