Rubrik: Controls | VB-Versionen: VB2010 - VB2015 | 18.08.17 |
ToolStripDropDownButton mit erster Ebene aus MenuItems aus einer DataTable erstellen Der Tipp vermittelt Code, der geeignet ist, Menüpunkte für einen ToolStriDropDownButton zu erstellen, die aus einer Datentabelle (bspw. SQL) erzeugt werden. | ||
Autor: Dietrich Herrmann | Bewertung: | Views: 5.918 |
ohne Homepage | System: Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Der Tipp vermittelt Code, der geeignet ist, Menüpunkte für einen ToolStriDropDownButton zu erstellen, die aus einer Datentabelle (bspw. SQL) erzeugt werden. (Nur erste Ebene von Menüpunkten)
Zunächst die Vereinbarungen:
Private WithEvents dropDownButton As ToolStripDropDownButton Private WithEvents dropDown As ToolStripDropDown Private WithEvents dropItem As ToolStripMenuItem
Ausgehend von einer Datentabelle, die die Texte der Menüpunkte enthält, wird das Control ToolStripDropDownButton für das in einer Form enthaltene ToolStrip erzeugt.
Dabei sind:
- myToolStrip: der ToolStrip
- myDataTable: die Datentabelle
- dropA: ein Array zur Zwischenspeicherung der Menüpunkt-Texte
Code (Reihenfolge der Control-Erstellung ist wichtig):
dropDown = New ToolStripDropDown With dropDown .BackColor = Color.Green ' Bsp. Backcolor ' weitere Eigenschaften setzen End With
dropDownButton = New ToolStripDropDownButton With dropDownButton .Text = "myDropDown" .DropDown = dropDown ' weitere Eigenschaften setzen End With
Dim dropA(myDataTable.Rows.Count - 1) As ToolStripMenuItem For i As Short = 0 To myDataTable.Rows.Count - 1 dropItem = New ToolStripMenuItem With dropItem .BackColor = Color.Beige 'Bsp. Backcolor .Text = myDataTable.Rows(i).Item("myMenuPointText") ' weitere Eigenschaften setzen End With dropA(i) = dropItem Next dropDown.Items.AddRange(dropA) ' die Menütexte ins Control ToolStrip.items.Add(dropDownButton)
Wenn man den dropDownButton an eine ganz bestimmte Stelle des Toolstrip einsetzen möchte, kann man das mit folgender Hilfsfunktion erreichen:
' ermitteln des Index eines ToolstripItem mittels seines Namens Public Function IndexOfToolstripItem(theToolstrip As ToolStrip, _ theItemName As String) As Short Dim i As Short = 0 For Each it As ToolStripItem In theToolstrip.Items If theItemName = it.Name Then Exit For i += 1 Next Return i End Function
Dann programmieren:
Dim ix As Short = IndexOfToolstripItem(Navigator, "myToolStripItemName") - 1 ToolStrip.Items.Insert(ix, dropDownButton)
Für die Anwendung der MenuItems kann man das Event „dropDown.Itemclicked“ verwenden.
Viel Erfolg.