Problem dynamisch hinzugefügten Elemten

  • VB.NET

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

    Problem dynamisch hinzugefügten Elemten

    Ich habe ein Problem mit Handles bei dynamisch hinzugefügten Elemten, und zwar füge ich mit dem folgenen Codestück Pictureboxen zu einem FlowLayoutPanel hinzu:

    VB.NET-Quellcode

    1. For Each x In anims
    2. If x.frames(0) <> "" Then
    3. Dim image As New PictureBox
    4. image.ImageLocation() = x.frames(0)
    5. 'ImageBox Einstellungen
    6. aniContainer.Controls().Add(image)
    7. image.Show()
    8. End If
    9. Next


    Das Problem: Ich hätte bei den PictureBoxen gerne eine Reaktion auf Mausklicks. Habe sogar schon gegoogelt (wow!), und bin auf WithEvents und AddHandler gestoßen. Allerdings erfordert WithEvents ja eine Globale Dekleration. Wie könnte ich das hier umsetzen?
    DU könntest das so machen:

    VB.NET-Quellcode

    1. For Each x In anims
    2. If x.frames(0) <> "" Then
    3. Dim image As New PictureBox
    4. image.ImageLocation() = x.frames(0)
    5. 'ImageBox Einstellungen
    6. aniContainer.Controls().Add(image)
    7. addhandler Image.click, address of PictureBoxClick
    8. image.Show()
    9. End If
    10. Next


    Und dann erstellst du noch einen Sub:

    VB.NET-Quellcode

    1. Private Sub PictureBoxClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
    2. 'Dein Code
    3. End Sub


    lg
    hallo lupinus,

    das withevents statement kannst du verwenden, wenn du ein control im deklarationteil deiner klasse erstellst.
    nicht jedoch wenn das control in einer sub oder funktion erstellt wird (dynamisch).

    beispiel - für ein control mit withevents - das ich oft in meinen codes verwende

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private WithEvents t As New Timer
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. End Sub
    5. Private Sub t_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles t.Tick
    6. End Sub
    7. End Class

    im gegensatz dazu steht eben dein code, der ohne withevents auskommen muss.

    gruss

    mikeb69