Program czeka na załadowanie WebBrowser

Program czeka na załadowanie WebBrowser
Pawell1029
  • Rejestracja:około 11 lat
  • Ostatnio:ponad 8 lat
  • Postów:14
0

Witam ;)
Potrzebuje funkcji dzięki której byłbym w stanie sprawdzić czy strona jest załadowana do końca. Mam coś takiego, ale nie wiem czego użyć żeby program czekał w tym miejscu.

Kopiuj
 
public bool WebBrowserLoadingComplete(WebBrowser webBrowser)
        {
            while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
            {
                 ????
            }
            return true;
        }

Dodatkowo mam problem z wywołaniem tej funkcji. Wyświetla się, że "The name 'WebBrowserLoadingComplete' does not exist in the current content". Funkcja i wywołanie są w jednej klasie.

Kopiuj
 
if(WebBrowserLoadingComplete(webBrowser))
{ ... }

Pozdrawiam :)

edytowany 2x, ostatnio: Pawell1029
Trebuh
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:okolice Łodzi
0

Uruchamiaj tą metodę w oddzielnym wątku i gdy nie jest załadowana to użyj zatrzymania wątku (sam robiłem i zamrażałem na 100ms) ;)


GG: 10101100010110000100011101 (BIN)
"Nie wszystko napisane w internecie jest prawdą" - Józef Piłsudski.
Pawell1029
Nie do końca zrozumiałem, jestem trochę zielony z programowania ;) mógł byś napisać mi kawałek kodu który jest mi potrzebny? Będę niezmiernie wdzięczny, bo będzie mi działał program i nauczę się czegoś na przyszłość :)
dam1an
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa
  • Postów:1589
1

WebBrowser ma Event LoadCompleded czy cos w tym stylu.

Trebuh
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:okolice Łodzi
1

@Pawell1029:

Kopiuj
public bool WebBrowserLoadingComplete(WebBrowser webBrowser)
{
 while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
 {
       Thread.Sleep(100); //czeka 100ms 
 }
 return true; 
} 

Pamiętaj że tam gdzie czeka 100ms program zatrzymuje się i nie może nic obsługiwać.

Edit: Pamiętaj o dodaniu using System.Threading;.


GG: 10101100010110000100011101 (BIN)
"Nie wszystko napisane w internecie jest prawdą" - Józef Piłsudski.
edytowany 1x, ostatnio: Trebuh
dam1an
Powinieneś użyć eventu.
Pawell1029
A jak z wywołaniem bo dalej mam "The name 'WebBrowserLoadingComplete' does not exist in the current content"
dam1an
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa
  • Postów:1589
1

Co Cię powstrzymuje przed zrobieniem tego w evencie?

Kopiuj
 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            MessageBox.Show("Załadowano");
        }

Jeśli zrobisz to z Thread.Sleep będzie Ci mroziło formę co chwilę, musiałbyś to puścić w oddzielnym wątku a wtedy będzie dodatkowo problem jeśli byś chciał zaktualizować formę bo trzeba przez Invoke.

Co do tego czemu nie działa, tą metodę musisz wykonać z klasy w której masz webbrowser czyli prawdopodobnie Form1

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.