none
Webbrowser - ProgressBar nur während Laden sichtbar? RRS feed

  • Frage

  • Hallo!
    Mal wieder ich ;)

    Ich bin gerade dabei ein Webbrowser zu programmieren, ist im Prinzip auch schon fertig. Es sollte nur noch so sein wie in anderen Browsern auch, dass die ProgressBar nur während des Ladevorgangs sichtbar ist. Sobald die Seite fertig geladen wurde, wird die ProgressBar wieder ausgeblendet.

    Wie programmier ich dies? Hab schon alles versucht, auch schon nach Lösungsvorschlägen gesucht. Doch bis jetzt Erfolglos. Vielleicht könnt Ihr mir an dieser Stelle weiterhelfen?

    LG Dominik
    Donnerstag, 18. Februar 2010 18:46

Antworten

  • Hallo Dominik,

    ich bin mir zwar nicht sicher, aber probier das dich mal mit der Funktion WebBrowser1_DocumentCompleted

    Private

     

    Private

     

    Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted

    ProgressBar1.Visible =

    False

     

    End Sub

     

     

     


    Liebe Grüße StefanViel Erfolg
    Stefan
    Donnerstag, 18. Februar 2010 22:06
  • Hallo Dominik,

    ok, wenn du die Eigenschaft auf ProgressBar1.Visible=False gesetzt hast ist die Fortschrittanzeige so lange unsichtbar, bis du sie wieder sichtbar machst.
    Vermutlicht möchtest du, dass die Fortschrittsanzeige sichtbar ist, wenn du ein Ereignis startest z.B. eine Schaltfläche drückst.

    Oftmals gibt man ja in eine TextBox die Website an und startet das Ereignis auf einen Button.
    Dein Code könnte also in etwa so aussehen:

    Public

     

    Class Form1

     

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    ProgressBar1.Visible = True
    WebBrowser1.Navigate(TextBox1.Text)

     

    End Sub

     

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted

    ProgressBar1.Visible =

    False

     

    End Sub

    End

     

    Class


    Mit der Button1_Click Metode machst du deinem Programm klar, dass es die Fortschrittanzeige sichtbar machen soll und das das WebBrowser1-Element zur Website navigiert, die du im Eingabefeld eingegeben hast. Der Code hier ist natürlich stark vereinfacht, macht aber das was du möchtest.
    Die WebBrowser1_DocumentCompleted-Methode überwacht quasi den Ladevorgang des ausgewählten Dokumentes (Website). Wenn diese vollständig geladen ist, tritt das gewüschte Ereignis ein und die Fortschrittsanzeige wird ausgeblendet.

    Wenn du mit den Eigenschaften Visible oder Hide bzw. Show arbeitest sollts du immer daran denken, dass Elemente, die man ausblendet auch irgendwann einmal eingeschaltet werden müssen weil sie sonst überflüssig sind.

    Probiers aus, es klappt.
    LG
    Stefan


    Liebe Grüße Stefan
    Freitag, 19. Februar 2010 15:14
  • Hallo Dominik,

    noch ein Nachtrag. Wenn du möchtest, dass die ProgressBar1 in dem Moment sichtbar ist(wird) wenn du damit beginnst, einen neuen Text in die TextBox einzugeben, dann kannst du auch die TextBox1_TextChanged-Methode verwenden.

    Private

     

    Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    ProgressBar1.Visible =

    True

     

    End Sub



    Du musst dir immer im Klaren sein, wann du von deinem Programm was erwartest. Davon hängt dann ab, welche Methode du verwendest.

    LG
    Stefan
    Liebe Grüße Stefan
    Freitag, 19. Februar 2010 15:20

Alle Antworten

  • Hallo Dominik,

    ich bin mir zwar nicht sicher, aber probier das dich mal mit der Funktion WebBrowser1_DocumentCompleted

    Private

     

    Private

     

    Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted

    ProgressBar1.Visible =

    False

     

    End Sub

     

     

     


    Liebe Grüße StefanViel Erfolg
    Stefan
    Donnerstag, 18. Februar 2010 22:06
  • Hallo Stefan.
    Sollte im Prinzip funktionieren, hat es beim 1. mal auch, doch dann bleibt die Progressbar ganz ausgeblendet.

    LG Dominik
    Freitag, 19. Februar 2010 14:22
  • Hallo Dominik,

    ok, wenn du die Eigenschaft auf ProgressBar1.Visible=False gesetzt hast ist die Fortschrittanzeige so lange unsichtbar, bis du sie wieder sichtbar machst.
    Vermutlicht möchtest du, dass die Fortschrittsanzeige sichtbar ist, wenn du ein Ereignis startest z.B. eine Schaltfläche drückst.

    Oftmals gibt man ja in eine TextBox die Website an und startet das Ereignis auf einen Button.
    Dein Code könnte also in etwa so aussehen:

    Public

     

    Class Form1

     

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    ProgressBar1.Visible = True
    WebBrowser1.Navigate(TextBox1.Text)

     

    End Sub

     

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted

    ProgressBar1.Visible =

    False

     

    End Sub

    End

     

    Class


    Mit der Button1_Click Metode machst du deinem Programm klar, dass es die Fortschrittanzeige sichtbar machen soll und das das WebBrowser1-Element zur Website navigiert, die du im Eingabefeld eingegeben hast. Der Code hier ist natürlich stark vereinfacht, macht aber das was du möchtest.
    Die WebBrowser1_DocumentCompleted-Methode überwacht quasi den Ladevorgang des ausgewählten Dokumentes (Website). Wenn diese vollständig geladen ist, tritt das gewüschte Ereignis ein und die Fortschrittsanzeige wird ausgeblendet.

    Wenn du mit den Eigenschaften Visible oder Hide bzw. Show arbeitest sollts du immer daran denken, dass Elemente, die man ausblendet auch irgendwann einmal eingeschaltet werden müssen weil sie sonst überflüssig sind.

    Probiers aus, es klappt.
    LG
    Stefan


    Liebe Grüße Stefan
    Freitag, 19. Februar 2010 15:14
  • Hallo Dominik,

    noch ein Nachtrag. Wenn du möchtest, dass die ProgressBar1 in dem Moment sichtbar ist(wird) wenn du damit beginnst, einen neuen Text in die TextBox einzugeben, dann kannst du auch die TextBox1_TextChanged-Methode verwenden.

    Private

     

    Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

    ProgressBar1.Visible =

    True

     

    End Sub



    Du musst dir immer im Klaren sein, wann du von deinem Programm was erwartest. Davon hängt dann ab, welche Methode du verwendest.

    LG
    Stefan
    Liebe Grüße Stefan
    Freitag, 19. Februar 2010 15:20
  • Hallo Stefan.
    Erst einmal Danke für deine Antwort. Mir ist das aufgefallen als ich mir mal den Code genauer angeschaut habe. Natürlich muss man auch die ProgressBar wieder sichtbar machen. Hab ich dann auch gemacht:
        Private Sub WebBrowser1_Navigating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles WebBrowser1.Navigating
            ProgressBar1.Visible = True
        End Sub
    Und natürlich damit Sie verschwindet (wie du schon geschrieben hattest):

    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
            ProgressBar1.Visible = False
    
            Dim a As Integer
            For a = 0 To ComboBox1.Items.Count - 1
                If ComboBox1.Items(a).ToString = WebBrowser1.Document.Url.AbsoluteUri Then
                    Exit Sub
                End If
            Next a
    
            ComboBox1.Items.Add(WebBrowser1.Document.Url.AbsoluteUri)
    
        End Sub

    LG
    Dominik
    Freitag, 19. Februar 2010 16:37