• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[VB 2010] Webbrowser-Element fertig mit laden?

thuemmy

Aktives Mitglied
Hallo Forum,

zur Zeit spiele ich gerade etwas mit Visual Basic 2010 Express rum. Im Moment versuche ich mich gerade etwas in das Webbrowser-Element einzuarbeiten. Ziel soll sein, eine Webseite, wenn sie feritg geladen ist, weiter zu verarbeiten. Ich bin auf das DocumentCompleted-Ereigniss gestoßen. Gleich bei den ersten Versuchen habe ich festgestellt, dass es da Probleme gibt. Auf Google wird das Ereigniss gleich 2 mal ausgelöst. Hier der Code:
Code:
    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        MsgBox("Seite komplett")
    End Sub
Die Messagebox wird 2 mal angezeigt. Gibt es eine zuverlässigere Möglichkeit festzustellen, ob die Seite komplett geladen ist?

Danke schonmal für Eure Hilfe
thuemmy
 
Werbung:
Kann man sich eine Entwicklungsumgebung dafür kostenlos irgendwo runterladen? Dann probiere ich es wohl mal aus. Sorry, bin zu faul, selbst nachzuforschen. :)

Spontaner Tipp wäre, dass da eine Weiterleitung stattfindet. Das finde ich zwar nicht so wirklich plausibel, aber na ja.
 
Moin mernshaus,

kann man... Ich bin zwar generell dagegen die Faulheit der Leute zu untersützen, aber da ich was von Dir will, will ich ja mal nicht so sein :D Hier der Link: Visual Basic 2010 Express - Download - CHIP Online Da wird allerdings nur ein kleines Installationsprogramm runtergeladen. Während der Installation wird dann der größte Teil erst runtergeladen (kann dauern). Sofern Du noch nicht das .NET-Framework 4 auf dem Rechner hast, musst Du dann während der Installation den Rechner nochmal neu starten. Hoffentlich hab ich Dich jetzt nicht abgeschreckt :D

Damit Du nicht allzuviel Arbeit hast, hier ganz kurz wie das Programm aussieht:

Eine Form, darin sind eine Textbox, ein Button und das Webbrowser-Element. Der Code ist auch nicht allzuviel, nur 2 Anweisungen:
Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        WebBrowser1.Navigate(TextBox1.Text)
    End Sub

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        MsgBox("Fertig")
    End Sub
Und das war's.

Mittlerweile habe ich festgestellt, dass auf www.google.de ein iframe geladen wird. Ich vermute, dass das iframe, bzw. das Dokument darin, ebenfalls das DocumentCompleted-Event feuert. Die Erkenntnis hilft mir leider nicht weiter, da ich immer noch das Problem habe, wie ich zuverlässig feststelle, ob eine Webseite komplett geladen wurde, incl sämtlicher iframes und was weiß ich noch alles.

Vielen Dank für Deine Mühe
Matthias
 
Zuletzt bearbeitet:
Werbung:
Huih die Installation hätte mit 2,4 GB fast nicht auf die Festplatte der Virtual Machine gepasst. :)

Ich bin zwar generell dagegen die Faulheit der Leute zu untersützen, aber da ich was von Dir will, will ich ja mal nicht so sein

Hehe. Ich habe in den letzten Jahren praktisch nichts mit Windows gemacht, weshalb ich mich da in so ziemlich alles erst reinfinden müsste. Da dachte ich, ich frage lieber. :)

Probier es mal so:

Code:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        WebBrowser1.Navigate(TextBox1.Text)
    End Sub

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        MsgBox("DocumentCompleted for URL: " + e.Url.AbsoluteUri)

        If (WebBrowser1.ReadyState = WebBrowserReadyState.Complete) Then
            MsgBox("ReadyState.Complete")
        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        TextBox1.Text = "http://www.google.de"
        WebBrowser1.Navigate(TextBox1.Text)
    End Sub

End Class

Quelle:

- DocumentCompleted fires twice? - VBForums
 
Danke für die Antwort und Deine Mühe. Den ReadyState hab ich mittlerweile auch gefunden. Und genauso wie Du es gemacht hast, habe ich das dann auch erledigt. Das erscheint mir auf jeden Fall von der Perfomance besser zu sein, als die Version die ich jetzt auch schon öfters gefunden habe mit der While-Schleife und innerhalb der While-Scheife die DoEvents-Methode aufrufe.

Danke für die Mühe und die Hilfe
Gruß thuemmy
 
Zurück
Oben