Hey liebe Community. Ich habe mal wieder ein Problem, vllt auch nur einen Denkfehler und hoffe ihr könnt mir helfen
Also ich will mit einer Schleife Controls erstellen und jedem erstellten Control ein Contextmenü zuweisen dass beim click-event geöffnet wird. Hier teile des Codes den ich verwenden wollte, vllt wird hier mein Problem klar:
Das Problem, ich denke man merkt es, der Contextmenübutton hat am ende so viele Handler wie x (von der Schleife), sprich bei einem click werden alle Informationen von allen Panels gezeigt. Ich hoffe man verstehts einigermaßen
Meine Frage: Wo ist mein Fehler, bzw wie kann man es realisieren dass immer das gleiche Contextmenü die Informationen des Panels hat das ich angeklickt habe, oder ist das gar nicht möglich?
Danke für eure Hilfe MFG
PS: Der gepostete Code besteht nur aus Ausschnitten die das Problem zeigen soll, nur falls jemand sich fragt warum ich da eine Function drinnen habe obwohl das da keinen Sinn gibt
Also ich will mit einer Schleife Controls erstellen und jedem erstellten Control ein Contextmenü zuweisen dass beim click-event geöffnet wird. Hier teile des Codes den ich verwenden wollte, vllt wird hier mein Problem klar:
VB.NET-Quellcode
- Sub Erstellepanels(Liste As List(Of String))
- For x = 0 To Liste.Count - 1
- DesignPanel(85, x)
- Next
- End Sub
- Function DesignPanel(Addwert As Integer, Anzahl As Integer) As Panel
- Try
- Dim Link As New Windows.Forms.Panel()
- Link.Location = New System.Drawing.Point(xPanel, yPanel + Addwert)
- Link.Name = "P" & Anzahl
- Link.Size = New System.Drawing.Size(1366, 61)
- Link.TabIndex = 0
- Link.Cursor = Cursors.Hand
- Link.BackColor = Color.White
- Controls.Add(Link)
- Link.Parent = Panel1
- AddHandler Link.MouseEnter, Sub() Setselected(Link)
- AddHandler Link.MouseLeave, Sub() Setnoselected(Link)
- AddHandler Link.Click, Sub() ContextMenuStrip1.Show(Link, Link.Location) 'Hier will ich das Contextmenu beim CLicken auf das panel öffnen
- 'Hier jetzt mein Problem, Denkfehler: Ich möchte hier beim Klicken auf den Contextmenübutton informationen über das senderpanel bekommen. Da das ja immer das gleiche Menü ist war für mich logisch hier einen Handler mit den Senderinformationen zu defenieren
- AddHandler TextInDieZwischenablageKopierenToolStripMenuItem.Click, Sub() Contextmenuitemclick(Link) 'TextInDieZwischenablageKopierenToolStripMenuItem.Click ist mein Contextmenübutton
- Return Link
- Catch ex As Exception
- Return Nothing
- End Try
- End Function
- Sub Contextmenuitemclick(sender As Panel)
- MsgBox(sender.Name.ToString)
- End Sub
Das Problem, ich denke man merkt es, der Contextmenübutton hat am ende so viele Handler wie x (von der Schleife), sprich bei einem click werden alle Informationen von allen Panels gezeigt. Ich hoffe man verstehts einigermaßen
Meine Frage: Wo ist mein Fehler, bzw wie kann man es realisieren dass immer das gleiche Contextmenü die Informationen des Panels hat das ich angeklickt habe, oder ist das gar nicht möglich?
Danke für eure Hilfe MFG
PS: Der gepostete Code besteht nur aus Ausschnitten die das Problem zeigen soll, nur falls jemand sich fragt warum ich da eine Function drinnen habe obwohl das da keinen Sinn gibt
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „SidezockingLP“ ()