Ereignis ohne Parameter

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

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von tron25.

    Ereignis ohne Parameter

    Ich habe eine Listbox mit folgendem Ereignis:

    VB.NET-Quellcode

    1. Public Sub ObjektListe_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ObjektListe.SelectedIndexChanged
    2. If Ausfuehren Then
    3. 'Hier wird das aktuelle Objekt eingelesen. Je nach Art werden Die Felder
    4. 'für die Eigenschaften aktiviert. Das Objekt wird in seine Bestandteile
    5. 'zerlegt und in die entsprechenden Felder eingetragen.
    6. If ObjektListe.SelectedIndex < 0 Then
    7. Exit Sub
    8. End If
    9. X = ObjektListe.SelectedIndex
    10. ElementeDeaktivieren()
    11. BeschreibungText.Enabled = True
    12. Zaehler = Len(ObjektListe.Items.Item(X)) + 3
    13. Zaehler2 = Zaehler + 1
    14. Do Until Mid(Objektkatalogliste.Item(X), Zaehler2, 1) = "," Or Zaehler2 >= Len(Objektkatalogliste.Item(X))
    15. Zaehler2 = Zaehler2 + 1
    16. Loop
    17. ...
    18. end sub


    An einer anderen Stelle im Programm habe ich eine weitere SUB, die das obige Ereignis aufrufen soll. Allerdings braucht die andere SUB keine Parameter übergeben, da der Code im Ereignis keine benötigt. Folgendes habe ich versucht:

    VB.NET-Quellcode

    1. private sub ElementeAktualisieren()
    2. 'Ein neues Element wird generiert und der Liste hinzugefügt. Nun müssen die Eigenschaften des Elementes aktualisiert werden. Dazu wird das Ereignis aufgerufen.
    3. ObjektListe_SelectedIndexChanged()
    4. end sub


    Leider funktioniert diese Methode nicht. Für den Parameter "sender" kann ich z.B. "Me" angeben. Ich habe allerdings nicht verstanden, was ich für den Parameter "e" angeben kann. Gibt es evtl. etwas, wie beispielsweise "empty" oder "NULL" oder ""? Wie ja oben zu sehen ist, braucht der Code im Ereigniss keine Parameter.

    Vielen Dank für eure Hilfe.
    Wenn Du die Argumente des Handlers sowieso nicht benötigst, dann lager den Inhalt einfach in eine separate Methode aus, die Du dann so aufrufen kannst.

    Grüße
    #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 :!:
    Pack alles was in SelectedIndexChanged steht in eine separate Sub. Diese kannst du dann im SelectedIndexChanged Event und bei ElementeAktualisieren aufrufen
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    jepp - und so hast du die Chance, durch Benamung ein schönes Design zu erhalten - weisst ja:

    Nomen est Omen!


    VB.NET-Quellcode

    1. Public Sub ObjektListe_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ObjektListe.SelectedIndexChanged
    2. '...
    3. UpdateElement()
    4. end sub
    5. private sub ElementeGenerieren()
    6. '...
    7. UpdateElement()
    8. end sub
    9. private sub UpdateElement()
    10. '...
    11. end sub
    Aber mir scheint das eh fehldesigned, UpdateElement sollte das zu updatende Element auch übergeben bekommen

    VB.NET-Quellcode

    1. Public Sub ObjektListe_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ObjektListe.SelectedIndexChanged
    2. '...
    3. UpdateElement(myElement)
    4. end sub
    5. private sub ElementeGenerieren()
    6. '...
    7. UpdateElement(myElement)
    8. end sub
    9. private sub UpdateElement(myElement as ElementDataType)
    10. '...
    11. end sub
    Guck - wenn ordentlich designed ists viel verständlicher und braucht auch keine Kommentare (die hier eh tw. falsch waren)