KeyDOWN Event für dynamisch erzeugte Controls

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Semiconductor.

    KeyDOWN Event für dynamisch erzeugte Controls

    Huhu liebe Community,

    folgendes Problem habe ich:

    VB.NET-Quellcode

    1. Dim DGVListe As New List(Of DataGridView)
    2. For i As Integer = 0 To 20
    3. Dim DGV As New DataGridView()
    4. With DGV
    5. .ReadOnly = True
    6. End With
    7. DGVListe.Add(DGV)
    8. Next


    Ich habe dynamisch erstellte Datagridviews, die in einer List of Datagridview soweit angebunden werden, und genutzt werden.
    Ich habe Schwierigkeiten bei der Umsetzung, wie ich auf das KeyDown Ereignis der jeweiligen, dynamisch erzeugten Datagridviews zugreifen kann.
    Wie ist dies zu realisieren? Gibt es dazu Tutorials, bzw. Anleitungen zumindest für dynamisch-erstellte Controls?

    Mein Ansatz, bzw. meine Idee:

    VB.NET-Quellcode

    1. Private Sub DGV_KeyDown(sender As Object, e As KeyEventArgs) Handles DGVListe.KeyDown
    2. End Sub


    Soweit ist natürlich eine Fehlermeldung bei DGVListe.KeyDown zu erkennen.
    (Erfordernis einer WithEvents Variable)
    Bzw. AddHandler habe ich gelesen


    Vielen Dank und mit freundlichem Gruß
    Semi

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

    Du kannst einfach einen Handler mit AddHandler hinzufügen:

    VB.NET-Quellcode

    1. Dim DGVListe As New List(Of DataGridView)
    2. For i As Integer = 0 To 20
    3. Dim DGV As New DataGridView()
    4. With DGV
    5. .ReadOnly = True
    6. End With
    7. DGVListe.Add(DGV)
    8. AddHandler DGV.KeyDown, AddressOf DGV_KeyDown
    9. Next
    10. Sub DGV_KeyDown
    11. 'Mach was
    12. 'Betrifft nun alle DGV's auf die Addhandler angewendet wurde
    13. End Sub
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


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

    @Semiconductor 20 DataGridViews in einer List(Of DataGridView) scheint mir das falsche Design zu sein.
    Wie sind die denn angeordnet bzw. sichtbar?
    Überleg mal, ob Du ein TabControl verwendest, da kannst Du Dir ein eigenes UserControl bauen, dessen Kern das DGV ist, und dessen Code dann für alle gleichermaßen gilt.
    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!
    Aber beachte: Wenn du die Controls dynamisch erzeugst und ihnen den Eventhandler zuweist, dann entferne den Handler, sonfern das Control nicht mehr gebraucht wird.
    Hierzu ein schönes Video:

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell