Ereignishandler für Controls im Flowlayout Panel

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von programmer71.

    Ereignishandler für Controls im Flowlayout Panel

    hi,
    ich füge zur laufzeit buttons in ein FlowlayoutPanel ein.Die Buttons werden im Code definiert.Ich möchte aber das wenn man jetzt einen von diesen buttons clickt ein Programm geöffnet wird dessen Pfad sich aus dem Pfad eines ordner + denn Text des geklickten Buttons zusammensetzt(z.b. C:\Program Files (x86)\Test\ + Text des Buttons).Ich weiß das ich das irgendwie mit der AddHandler Methode machen kann nur ich weiß nicht wie man dann denn Text des Geklickten Buttons abruft.

    wie könnte ich das verwirklichen?
    Du musst den sender zu Button casten und dann kannst du auf den Text zurückgreifen.

    VB.NET-Quellcode

    1. DirectCast(sender, Button).Text


    @programmer71
    Der Button besitzt keinen sender. Der sender ist der Button und ein Parameter des Click Events.

    LaMiy schrieb:

    Ist es nicht besser TryCast zu benutzen ?
    Das würde ich in mindestens 2 Zeilen programmieren, das DirectCast() sollte dabei unbedingt Solo stehen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    programmer71 schrieb:

    Jeder Button verfügt über "sender".
    Einfach:

    VB.NET-Quellcode

    1. Dim button As New Button
    2. If sender Is button Then
    3. MsgBox("button wurde gedrückt.")
    4. End If
    Mein Gott, was ein Unfug - für sowas kriegt man "hilfreich"?? ;(




    LaMiy schrieb:

    Ist es nicht besser TryCast zu benutzen ? Falls der sender kein Button ist.

    VB.NET-Quellcode

    1. MessageBox.Show(TryCast(sender, Button).Text)
    Nein, dassis ühaupt nicht besser.
    Es ist unabweisbar klar, dass an dieser Stelle in der Sender-Variable ein Button ist, und deshalb soll man direckt casten, nicht tryen.
    zum einen das performanteste, zum anneren ist die InvalidCast-Exception unbedingt erwünscht, denn wenn im Sender was anneres drin ist als ein Button, dann hat der Programmierer eklatanten Mist gebaut, und ist doch froh, wenner das direkt rückgemeldet bekommt.

    Bei deinem TryCast läuft das Proggi noch ein winzbischen weiter, und dann kommt die NullReferenceException, und leitet dich vlt. fehl, denn beim Debuggen stellste fest: "Sender ist doch garnet Nothing - wieso die NullReferenceException?"

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    @ErfinderDesRades
    @Gonger96
    Sorry, das war mein Bruder. :thumbdown:
    Hab jetzt das Passwort geändert, dass er sich nicht mehr einloggen kann!
    Der postet hier leider glaub ich des Öfteren mal Crap... ;(
    Natürlich ist wie gesagt das "sender" nur beim Click-Event interessant.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „programmer71“ ()