Dynamische Pictureboxen mit verschiedenen Events

  • VB.NET

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

    Dynamische Pictureboxen mit verschiedenen Events

    Hey, ich bins nochmal,

    Ich sitze momentan immer noch an meinem Minecraft ModManager und habe das mit der .jar soweit ganz gut hingekriegt,jedoch stehe ich gerade vor meinem nächsten Problem. Und zwar lade ich aus der Datenbank die Mods raus. Für jeden Mod wird eine dynamische Picturebox erzeugt. So, nun möchte ich aber, dass ich beim Klick auf die Picturebox deren Name in eine Listbox lade.

    Hier mal mein Ansatz:

    VB.NET-Quellcode

    1. While data.Read()
    2. Dim Pic As New PictureBox
    3. Dim Label As New Label
    4. id = data(0)
    5. With Pic
    6. .Location = New Point(Picx, 20)
    7. .Size = New Size(100, 100)
    8. .Parent = Panel1
    9. .ImageLocation = data(3).ToString
    10. .SizeMode = PictureBoxSizeMode.Zoom
    11. .Name = "Bild" & id
    12. End With
    13. Panel1.Controls.Add(Pic)
    14. Picx = Picx + 100
    15. AddHandler Pic.Click, AddressOf Pic_click
    16. End While
    17. Private Sub Pic_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    18. MsgBox("hi")
    19. End Sub



    Problem ist jetzt ebend nur, wie ich innerhalb des Pic_Click-Events den Namen der angeklickten Picturebox in die Listbox kriege. Problem ist ebend, dass jede Picturebox anders heißt und wenn ich die Listbox mit Pic.Name ansprechen möchte bekomme ich natürlich einen Fehler. Wie überprüfe ich, auf welche der Pictureboxen geklickt wurde :/


    Danke im vorraus und mit freundlichen Grüßen


    Lucky66

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

    1 bitte vb.tag benutzen

    2:

    VB.NET-Quellcode

    1. Private Sub Pic_click(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles PictureBox1.Click
    2. MsgBox("hi")
    3. End Sub


    Hinten fehlte das Handles.


    fail gelesen....moment...


    Wie wäre es mit sowas, da ist hald das Problem... das du alle auflisten musst:

    VB.NET-Quellcode

    1. Private Sub btnAlle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    2. Handles btn0.Click, btn1.Click, btn2.Click, btn3.Click, btn4.Click, btn5.Click, btn6.Click, _
    3. btn7.Click, btn8.Click, btnAbs.Click, btnACos.Click, btnASin.Click, btnATan.Click, _
    4. btnAuf.Click, btnCos.Click, btnCosH.Click, btnDurch.Click, btnE.Click, btnExp.Click, _
    5. btnHoch.Click, btnLn.Click, btnLog.Click, btnMal.Click, btnPi.Click, btnPlus.Click, _
    6. btnPunkt.Click, btnSin.Click, btnSinh.Click, btnSqrt.Click, btnTan.Click, btnTanH.Click, _
    7. btnZu.Click
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


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

    Diese Antwort ist leider nicht sehr hilfreich,da ich nix im Handel eintragen kann, was vorher nicht definiert wurde.Wie man in meinem Quellcode erkennt bekommt jede Picturebox einen Namen. Bild1 ,Bild2, Bild3 ,etc. Diesen aber erst im Laufe des Programmes, sodass ich einen Deklarationsfehler bekomme wenn ich ein Sub mit dem Handle auf Bild1 lege.
    ja, dann kann ich dir leider nicht weiterhelfen.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    @Gather: Boardregeln §4, 2. j (Ist mir aufgefallen weil da ich es heute schon 3x von dir gelesen habe).

    @Lucky66: Vielleicht hilft dir der AddHandler (Müsste die Lösung sein ;) ), einfach mal "Vb.Net AddHandler" googeln oder Hier oder noch besser HIER gucken.

    Automatisch von C# nach Vb übersetzt (Quelle: RNedel @ p2p.wrox.com):
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Inherits Form
    3. '------------------------------
    4. ' Member Variables
    5. '------------------------------
    6. Private m_pictureBox As PictureBox = Nothing
    7. '------------------------------
    8. ' Constructors
    9. '------------------------------
    10. Public Sub New()
    11. InitializeComponent()
    12. End Sub
    13. '------------------------------
    14. ' Overrides
    15. '------------------------------
    16. Protected Overrides Sub OnLoad(e As EventArgs)
    17. MyBase.OnLoad(e)
    18. ' Instantiate the picture box.
    19. m_pictureBox = New PictureBox()
    20. ' Initialize some of the picture box's properties.
    21. m_pictureBox.Dock = DockStyle.Fill
    22. m_pictureBox.BackColor = Color.Bisque
    23. ' Add the picture box to the panel's Controls collection. This way, the panel will correctly
    24. ' dispose of the picture box later when the panel itself is destroyed.
    25. panel1.Controls.Add(m_pictureBox)
    26. ' Add event handlers for the picture box's Click and MouseDown events.
    27. m_pictureBox.Click += New EventHandler(AddressOf m_pictureBox_Click)
    28. m_pictureBox.MouseDown += New MouseEventHandler(AddressOf m_pictureBox_MouseDown)
    29. End Sub
    30. '------------------------------
    31. ' Event Handlers
    32. '------------------------------
    33. Private Sub m_pictureBox_MouseDown(sender As Object, e As MouseEventArgs)
    34. System.Diagnostics.Debug.WriteLine("PictureBox MouseDown event called.")
    35. End Sub
    36. Private Sub m_pictureBox_Click(sender As Object, e As EventArgs)
    37. MessageBox.Show(Me, "PictureBox Click event called.")
    38. End Sub
    39. End Class


    Gruß Eistee

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Eistee“ ()

    @Eistee, danke dir hab ich überlesen.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!