Webbrowser Progressbar - Status

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Fl3xXx.^.

    Webbrowser Progressbar - Status

    Moin Community

    Also momentan programmiere ich einen Webbrowser. Allerdings hab ich ein Problem mit der Progressbar die den Downloadstatus der Webseite anzeigen soll.
    Ich habe mehrfach gegoogelt und auch hier im Forum geschaut, aber die Lösung habe ich nicht gefunden.

    Hier den Quellcode + Fehlercode dazu:

    VB.NET-Quellcode

    1. Private Sub BrowserSeite_ProgressChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEventArgs) Handles BrowserSeite.ProgressChanged
    2. ProgressBar1.Value = e.CurrentProgress / e.MaximumProgress * ProgressBar1.Maximum
    3. End Sub


    Quellcode

    1. Eine Ausnahme (erste Chance) des Typs "System.OverflowException" ist in Xenon - Webbrowser.exe aufgetreten.

    ----> Der e.MaximumProgress ist meistens 0

    Kann ich das ganze irgendwie umgehen bzw. den Fehler auf einfache Weise beheben?
    bist du dir sicher, dass es "immer" so ist, schließlich hat es ja auch "manchmal" funktioniert, seit Vista(oder VS 2010, weiß ich jetzt nicht...) gibt das ProgressChanged Event bei einem Seitenladefehler z.B. -1 für e.CurrentProgress zurück...also drinne lassen solltest du es trotzallem als Sicherheit...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Also ich hab das ganze jetzt nochmal abgeändert. Da ich aber bei einzelnen Seite immer noch einen Fehler bekommen habe, habe ich alles nocheinmal mit der Try - Funktion versehen:

    VB.NET-Quellcode

    1. Private Sub WebBrowser_ProgressChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEventArgs) Handles WebBrowser.ProgressChanged
    2. Try
    3. ProgressBar.Value = e.CurrentProgress / (e.MaximumProgress + 1) * ProgressBar.Maximum
    4. If ProgressBar.Value = 100 Then
    5. ProgressBar.Value = 0
    6. End If
    7. Catch ex As Exception
    8. End Try
    9. End Sub

    Zur Erklärung:
    e.MaximumProgress: Dazu habe ich jetzt 1 dazuaddiert, um dem Fehler mit durch 0 dividieren aus dem Weg zu gehen.
    Try-Catch: Da es immernoch zu Fehlern kam, habe ich das ganze auf Kosten der Progressbar lauffähiger gestaltet.
    If ProgressBar.Value = 100: Da das DocumentCompleted - Event aufgrund des Fehlers nicht funktioniert, habe ich die ProgressBar.Value gleich im ProgressChanged - Event leeren lassen, wenn der Höchstwert 100 erreicht ist.
    mach mal so:

    VB.NET-Quellcode

    1. Private Sub WebBrowser1_ProgressChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEventArgs) Handles WebBrowser1.ProgressChanged
    2. ToolStripProgressBar1.Maximum = CInt(e.MaximumProgress)
    3. If e.CurrentProgress > 0 AndAlso e.CurrentProgress <= e.MaximumProgress Then ToolStripProgressBar1.Value = CInt(e.CurrentProgress)
    4. End Sub


    Ciao..
    ja so passt das schon besser^^
    wobei ich nur noch e.MaximumProgress > 0 hinzugefügt hätte...;)
    also die Anwendung vom TE war ganz anders, wie ichs gemeint hatte...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---