Выполнить изменение на вкладке после того, как новый элемент браузера загрузил страницу - PullRequest
0 голосов
/ 09 февраля 2012

Благодаря JP Hellemons мой браузер теперь может загрузить значок загруженной страницы.
Таким образом, я могу изменить значок моей формы Windows на значоксайт.

Теперь я хотел бы изменить значок формы, когда пользователь переключает вкладки, чтобы значок формы всегда совпадал с видимым сайтом.

Я сделалмаленький код и поместите его в SelectedIndexChanged-event .
Однако, когда я открываю новую вкладку, мой код переключает вкладки, создает элемент браузера внутри вкладки и затем переходит на домашнюю страницу.
Это приводит к ошибке при использовании моего кода, так как метод favicon пока не может найти новый браузер: 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 не будет создан, прежде чем искать значок?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...