vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Controls   |   VB-Versionen: VB2010 - VB201518.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 HerrmannBewertung:  Views:  5.885 
ohne HomepageSystem:  Win7, Win8, Win10, Win11kein 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.



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.