Listbox Aktuallisieren nach laden eines Webbrowser

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Sekki.

    Listbox Aktuallisieren nach laden eines Webbrowser

    Moin, ich kann das leider schlecht im Titel erklären

    VB.NET-Quellcode

    1. Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    2. Button2.Enabled = False
    3. Try
    4. WebBrowser1.Document.GetElementById("dnn_ctr439_ParentConfirmation_ucRegisterdataView_chkPermissionParent").InvokeMember("click")
    5. WebBrowser1.Document.GetElementById("dnn_ctr439_ParentConfirmation_ucRegisterdataView_chkAcceptTerms").InvokeMember("click")
    6. WebBrowser1.Document.GetElementById("dnn_ctr439_ParentConfirmation_btnSubmit").InvokeMember("click")
    7. Catch ex As Exception
    8. End Try
    9. Dim isa = ListBox1.SelectedIndex
    10. If WebBrowser1.DocumentText.Contains("abgeschlossen") Then
    11. ListBox1.Items.RemoveAt(isa)
    12. ListBox1.SelectedIndex = 0
    13. End If
    14. End Sub


    Hier am ende sieht man schon was ich versuch leider klappt das nicht da die aktion sofort augeführt wird und nicht gewartet wird bis der browser fertig ist.

    Ich habe ein modul WaitForPageLoad() das schaut so aus

    VB.NET-Quellcode

    1. Module Module1
    2. Private Property pageready As Boolean = False
    3. Public Sub WaitForPageLoad()
    4. AddHandler Form1.WebBrowser1.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
    5. While Not pageready
    6. Application.DoEvents()
    7. End While
    8. pageready = False
    9. System.Threading.Thread.Sleep(800)
    10. End Sub
    11. Private Sub PageWaiter(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
    12. If Form1.WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
    13. pageready = True
    14. System.Threading.Thread.Sleep(800)
    15. RemoveHandler Form1.WebBrowser1.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf PageWaiter)
    16. End If
    17. End Sub
    18. End Module


    Wenn ich aber an dieser stelle das einfüge läd der browser garnicht fertig.
    Kann mal jemand drüber schauen und mir eventuell ein tip geben danke
    Ich arbeite ebenfalls ständig mit der "WaitForPageLoad" Funktion und diese musst du eigentlich direkt nach einer Navigation aufrufen.

    VB.NET-Quellcode

    1. WebBrowser1.Navigate("http:\\google.de\")
    2. WaitForPageLoad()
    3. 'hier geht es dann erst weiter, wenn WebBrowser1 fertiggeladen hat
    4. MsgBox("Laden fertig!")


    Und soweit ich weiß, darf die Funktion nicht im WebBrowser1_DocumentCompleted Event aufgerufen werden. Sie muss in einem _click Event genutzt werden.
    Wenn ich eine Frage stelle, habe ich sie bereits gegooglet. Ja, es kommt vor, dass ich die Antwort übersehe. Ja, es kommt vor, dass ich sie nicht verstehe. Deshalb bin ich hier. Wenn dies eure Frage war, dann antwortet bitte nicht. Es stiehlt sämtliche Motivation.