Unhandled exception przy odświeżżżżżżaniu adresu strony internetowej

0

Dzień dobry

Mój program - przeglądarka internetowa.
W funkcji do wyświetlania adresu aktualnie wyświetlanej strony internetowej w combobox brakuje obsługi jakiegoś wyjątku. Pierwsze okienko wyświetla się już przy starcie, po kliknięciu CONTINUE program działa. z czasem (nie rozgryzłem dlaczego) pojawia się podobne które powoduje przerwanie działania programu.

Oto funkcja tworzenia nowej przeglądarki w controlTab:

 
 private void make_new_tab(object sender, EventArgs e)
        {
            //tab
            web = new WebBrowser();
            web.ScriptErrorsSuppressed = true;
            web.Dock = DockStyle.Fill;
            web.Visible = true;
            web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(web_DocumentCompleted);

            tabControl1.TabPages.Add("TAB");
            tabControl1.SelectTab(i);
            tabControl1.SelectedTab.Controls.Add(web);
            i += 1;
            //refresh page address eventhandler
            web.Navigating += new WebBrowserNavigatingEventHandler(web_Navigating);
        }

Ostatnia linijka dotyczy tej funkcji:

 private void web_Navigating(object sender, WebBrowserNavigatingEventArgs e)
        {
            //addressbar url actualisation after clicking to another page
            comboBox1.Text = ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Url.ToString();
        }

Bez tej funkcji oraz ostatniej linijki funkcji wyżej unhandled exceptions nie pojawiają się (adres strony też się nie aktualizuje)

Może macie pomysł, na czym polega ów wyjątek??
Nie chciałbym rezygnować z tego odświerzania.
Pozdrawiam, Darek

0

W zdarzeniu Navigating Url może nie być jeszcze ustawiony (null a na nim ToString() stąd wyjątek) - adres w combobox ustawiaj albo w momencie rozpoczęcia nawigacji w WebBrowser albo w zdarzeniu DocumentCompleted

0

Tylko że zdarzenie DocumentCompleted nie jest dostępne, bo w projekcie nie mam przeglądarki. Ona się tworzy dopiero z otwarciem nowej zakładki controlTab.
Możesz mi powiedzieć jak przypisać polecenie do zdarzenia nie korzystając z tej listy z właściwościami i zdarzeniami elementu?

0

A ja widzę, że w kodzie, który podałeś masz dokładnie to zdarzenie

web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(web_DocumentCompleted);

W funkcji web_DocumentCompleted daj tą linijke z comboboxem

0

Ajj. Właśnie zrozumiałem że to jest to zdarzenie... Dziękuję.
Tutaj odświeżanie adresu:

//refreshing the page address
        private void refresh_page_address(object sender, EventArgs e)
        {
            if (comboBox1.Text != ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Url.ToString())
            {
                comboBox1.Text = ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Url.ToString();
            }
        }

sam comboBox jest pusty:

 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

mam też np. uzupełnianie comboBoxa pozycjami z pliku txt (ulubione strony):

 //initializes addressbox with favourites
        private void initialize_combobox_with_favourites(object sender, EventArgs e)
        {
            //clears combobox
            comboBox1.Items.Clear();
            StreamReader sr = new StreamReader(path + settings_favourites);
            string favourites_position = sr.ReadLine();

            while (favourites_position != null)
            {
                comboBox1.Items.Add(favourites_position);
                favourites_position = sr.ReadLine();
            }
        }
0

Dziękuję, wygląda na to że zadziałało.

1 użytkowników online, w tym zalogowanych: 0, gości: 1