Fragensteller
Unterschied zwischen dropdownItem und ToolstripmenuItem?

Frage
-
Hab so ein Verständnisproblem bei der Menüstruktur:
Menu1
hat Menu1Sub1
Menu1Sub2
hat menu1Sub2sub1
menu1Sub2Sub2
All das sind Toolstripmenuitems - Korrekt?
menu1.dropdownItem(0) ist dann Menu1Sub1 - Korrekt?
Ist menu1.dropdownitem(0) nicht auch ein ToolstripmenuItem?
warum geht dann nicht:
menu1.dropdownItem(1).dropdownItem(0)? (sollte m.E. auf menu1Sub2sub1 verweisen.
oder aber:
wie bekomme ich eine Auflistung der Toolstripmenu-ChildItems von Menu1Sub2? (es gibt sowas wie ChildItems ja nicht)
Was ist der Unterschied zwischen einem DropdownItem und einem ToolstripmenuItem? Ist das nicht dasselbe?
Sorry ist vll etwas trivial...
TH
Alle Antworten
-
Hallo,
Beim Menustrip und dem ToolStrip hat man sich die Vererbung zu Nutze gemacht, da sie viele Eigenschaften teilen und im Verhalten ähnlich sind.
Das ToolStripDropDownItem ist die Basis für Elemente, die in einem DropDown erscheinen können. Sie verwalten die untergeordneten Elemente in der DropDownItems Auflistung.
Das ToolStripMenuItem stellt zusätzliche Eigenschaften für die Darstellung als Standard-Menüelement bereit. Andere Varianten wären ein DropDownButton oder ein SplitButton.
Durchlaufen kann man ein Menü z. B. so:
Public Shared Sub TraverseMenuItems(items As ToolStripItemCollection, level As Integer) For Each item As ToolStripItem In items Console.Write("".PadRight(level * 4)) Console.WriteLine("{0} - {1} / {2}", item.Text, item.Name, item.GetType()) If TypeOf item Is ToolStripDropDownItem Then Dim dropDownItem = DirectCast(item, ToolStripDropDownItem) TraverseMenuItems(dropDownItem.DropDownItems, level + 1) End If Next End Sub
Und für das Hauptmenü (hier mainMenu) aufgerufen als:
TraverseMenuItems(mainMenu.Items, 0)
Beim MenuStrip heisst die Eigenschaft Items, unterhalb dann DropDownItems.
Gruß Elmar
-
Danke erstmal Elmar.
Ich versuch zu verstehen:
ToolStripMenuItem ist einer von mehreren Mitgliedern von ToolstripDropDownItems?
In deinem Code kommt dann plötzlich ToolstripItem vor. Wo ist das denn einzuordnen?
Ich habe getestet:
Menu1.dropdownitems(1).gettype.tostring gibt ....ToolstripmenuItem aus.Warum funktioniert dann
Menu1.dropdownItems(1).dropdownItems(0) nicht?
(Fehlermeldung hier: dropdownitems ist kein Member von System.windows.forms.ToolstripItem". Dabei schreibt mir VB vorher - s.o. - Dropdownitems(1) ist vom Typ her ein ToolstripmenuItem.) -
Hallo,
schau Dir mal den Abschnitt "Vererbungshierarchie" in der Dokumentation an.
Geliefert wird als Auflistung eine TookStripItemCollection, worüber man ToolStripItem - die Basisklasse - erhält. Deswegen ist ein Cast notwendig, wie auch ich ihn im Beispiel verwendet habe.
Gruß Elmar