Problem mit RemoveHandler

  • VB.NET

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

    Problem mit RemoveHandler

    Hallo,

    ich versuche derzeit mit folgendem Code eine Website anzusteuern, warten, bis alles geladen wurde um mich dann einzuloggen und dann auf ein unterforum zu navigieren um dort weitere aktionen durchzuführen.

    Quellcode

    1. Private Sub tester_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tester.Click
    2. Dim cleantemp As New Process
    3. cleantemp.StartInfo.FileName = "RunDll32.exe"
    4. cleantemp.StartInfo.Arguments = "InetCpl.cpl,ClearMyTracksByProcess 255"
    5. cleantemp.Start()
    6. WebBrowser.Navigate("http://xxx.com/index.php?form=UserLogin")
    7. AddHandler WebBrowser.DocumentCompleted, (AddressOf Me.hand1)
    8. End Sub
    9. Private Sub hand1()
    10. RemoveHandler WebBrowser.DocumentCompleted, (AddressOf Me.hand1)
    11. WebBrowser.ScriptErrorsSuppressed = True
    12. 'Try
    13. Dim htmlDoc As HtmlDocument = WebBrowser.Document
    14. MsgBox("test")
    15. htmlDoc.GetElementById("loginUsername").InnerText = ("username")
    16. htmlDoc.GetElementById("loginPassword").InnerText = ("password)
    17. WebBrowser.Document.Forms(1).InvokeMember("submit")
    18. WebBrowser.Navigate("http://xxx.com/index.php?form=ThreadAdd&boardID=7")
    19. AddHandler WebBrowser.DocumentCompleted, (AddressOf Me.hand2)
    20. 'Catch ex As Exception
    21. 'MsgBox("Could not log in")
    22. 'End Try
    23. End Sub
    24. Private Sub hand2()
    25. ' placeholder
    26. End Sub


    Leider kommt bei RemoveHandler die Warnung "Der AddressOf-Ausdruck hat in diesem Kontext keine Wirkung, da das Methodenargument für AddressOf eine gelockerte Konvertierung in den Delegattyp des Ereignisses erfordert. Weisen Sie den AddressOf-Ausdruck einer Variablen zu, und verwenden Sie die Variable, um die Methode als Handler hinzuzufügen oder zu entfernen."

    Ich habe diesbezüglich schon folgendes durchgelesen:

    msdn.microsoft.com/de-de/library/zy55f115%28v=VS.90%29.aspx
    &
    msdn.microsoft.com/de-de/library/3xz97kac%28VS.80%29.aspx

    Leider konnte ich damit mein Problem nicht lösen.
    Der Code funktioniert einwandfrei und tut genau das, was ich möchte, leider wiederholt er aber immer wieder "hand1", was meiner meinung nach eben an der ineffizienz von "RemoveHandler" liegt.

    kennt ihr eine Lösung?

    danke im voraus...
    Die Signaturen Parameter von hand1 und dem DocumentCompleted Event müssen gleich sein.

    VB.NET-Quellcode

    1. Private Sub hand1(Byval sender as Object, e as WebBrowserCompletedEventArgs)

    Setze mal Option Strict auf On (Sollte immer eingeschaltet sein), dann wird der Fehler schon in der Entwicklungsumgebung unterstrichen werden.
    super vielen lieben dank für die schnelle antwort.
    damit wär mein problem gelöst :)

    allerdings passte in meinem fall

    Quellcode

    1. Private Sub hand1(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)

    besser fand ich :)

    wie setze ich option strict denn auf on?
    tut mir leid, bin noch neu auf dem gebiet :)

    //EDIT:
    ok habs gefunden :) unter Extras -> Optionen -> VB-Standart