Gleiches Event, Gleicher Code für mehrere Controls.

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Gleiches Event, Gleicher Code für mehrere Controls.

    Moin,

    ich fasse mich kurz, ich habe genau 18 Picturebox Controls in meiner Formsanwendung. Diese haben alle fixed3d als BorderStyle. Damit das ganze etwas schicker aussieht, soll bei MouseOver der BorderStyle auf FixedSingle gesetzt werden - sprich man sieht eine kleine Veränderung, sobald man mit der Maus über eines der Bilder fährt. Das ganze sähe dann so aus, dass ich 18x in jedem einzelnen MouseMove-Event jeder Picturebox ein

    VB.NET-Quellcode

    1. PictureboxXY.BorderStyle = FixedSingle
    klatsche. Meine Frage ist, geht das auch schöner?

    VB.NET-Quellcode

    1. Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox9.MouseMove, PictureBox8.MouseMove, PictureBox7.MouseMove, PictureBox6.MouseMove, PictureBox5.MouseMove[...]
    2. PictureBox1.BorderStyle = BorderStyle.FixedSingle
    3. End Sub


    So funktioniert das ganze natürlich nicht - war aber einen Versuch wert. Weiß irgendwer Abhilfe?
    Klar geht das so nicht, weil du halt immer PB1 nimmst, caste den Sender in eine PictureBox und ändere deren Eigenschaft.

    Oder Quick and dirty:

    VB.NET-Quellcode

    1. sender.BorderStyle = blaa


    Ps: Wobei du dann besser 2 Events und jeweilige Subs mit verknüpften Handlern nehmen sollltest: MouseEnter und MouseLeave würde ich da nehmen.
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    war schon nahe dran, nur dass es mit Strict Off formuliert ist.
    Korrekt kann es heissen:

    VB.NET-Quellcode

    1. Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox9.MouseEnter, PictureBox8.MouseEnter, PictureBox7.MouseEnter, PictureBox6.MouseEnter, PictureBox5.MouseEnter[...]
    2. DirectCast(sender, Picturebox).BorderStyle = BorderStyle.FixedSingle
    3. End Sub
    Und bei MouseLeave zurückstellen

    Wichtig: Visual Studio - Empfohlene Einstellungen
    @getaim Also wenn, dann bitte so, mit MouseMove hat das nix zu tun:

    VB.NET-Quellcode

    1. Private Sub PictureBox1_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox1.MouseEnter
    2. DirectCast(sender, PictureBox).BorderStyle = BorderStyle.FixedSingle
    3. End Sub
    4. Private Sub PictureBox1_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox1.MouseLeave
    5. DirectCast(sender, PictureBox).BorderStyle = BorderStyle.None
    6. End Sub
    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!