Parametervergabe bei AddressOf

  • VB.NET
  • .NET (FX) 4.0

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von NXGENMeteora.

    Parametervergabe bei AddressOf

    Hallo Leute,

    ich habe ein kleines Problem und weiss gerade nicht weiter :)
    Ich will einem Objekt einen Handler zuweisen der eine Methode auslöst, die jedoch nur mit Paramter ansprechbar ist.

    Hier ein Pseudo-Beispiel:

    VB.NET-Quellcode

    1. 'In dieser Methode wird der Handler vergeben und auf die Methode 'Test' verwiesen
    2. Private Sub initTest()
    3. Dim myObject as Object
    4. AddHandler CType(myObject, irgendEinControl).GotFocus, AddressOf Test("Hallo") '<--- Fehler
    5. End Sub
    6. Private Sub Test(ByVal tempStr as String)
    7. Messagebox.Show(tempStr)
    8. End Sub


    Ohne Parameter geht es.

    Meine Frage ist jetzt, wie ich einem Objekt einen Handler zuweisen kann, der eine Methode mit Parameter anspricht.
    Muss ich das per Delegate lösen oder bleibt mir noch etwas anderes übrig?
    Wäre sehr nett von euch, wenn ihr mir erklären könntet, was ich an dieser Stelle falsch mache :-).

    Vielen Dank und schöne Grüße!

    Meteora
    Grundsätzlich kannst du.. da du ja nur eine Adresse angibst... keine Parameter übergeben. (dies erledigt ja dann das aufrufende Object/Handler selbst)

    Falls(!) ich das richtig verstehe, so mach doch einfach eine 2. Sub ohne Parameter und rufe die auf..
    also in der Art

    .. addresssof Test2

    Sub test2
    test("Hallo")
    end Sub

    Sub Test ( tempstr as string)
    ...
    end Sub

    äh.. Edit:
    Natürlich muss die Sub die gleiche Signatur haben wie das Event dessen handler du setzt. (da hat Trade recht... habe ich irgendwie total ignoriert)
    also Test müsste eigentlich heissen (wenn du GotFocus setzt):
    Private Sub test2(sender As Object, e As System.EventArgs)

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „RoulettePilot“ ()

    Es macht keinen Sinn eine solche Methodensignatur zu setzen, wenn das ein Eventhandler ist. Deshalb erstellt man sich ne Property o. ä., die das dann übernimmt, aber als Signatur kommt wenn nur die eines Eventhandlers in Frage.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: