Menustrip auslesen

  • VB.NET

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

    Menustrip auslesen

    Und zwar habe ich ein Menüstrip erstellt, was ich gern wieder auslesen möchte.

    Im Prinzip folgendes Schema:

    Item1 Item2 ........... Item(x)

    Unteritem1.0 Unteritem2.0

    Unteritem1.1 Unteritem2.1

    Ich will einfach nur schaffen, dass es mir sowas anzeigt wie

    Item1 -> Unteritem1.0 -> Unteritem1.1

    Item2 -> Unteritem2.0 -> Unteritem 2.1

    bestimmt ganz einfach nur ich komm nicht drauf :(



    ForEach wert In mainMenu.Items

    wert.tostring -> bringt hier die Item1 und Item2 Namen aber die allein nutzen mir nix

    Next

    Nimm ma die VB-Tags, sieht der Code lesbarer aus...
    Man kann Schleifen auch schachteln (Wenns nur 2 Ebenen sind):
    Deine Variable Wert ist ja eigentlich ein Item-Objekt und enthält eine weitere Auflistung, die du mit einer weiteren Schleife durchlaufen kannst.

    Bei mehr als 2 Ebenen denke ma über Rekursion nach, also ne Funktion mit deiner Schleife, der du das Item übergibst. Ist der Count >0 dann ruft sie sich selber nochma auf uswusf.

    Fiel Fergnügen
    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Nein das enthält leider nicht das Objekt Item - dann wär alles klar. Ich weiß schon das ich das rekursiv auslesen kann aber irgendwie komm ich nicht in die einzelnen Toolstrips rein - zumindest irgendwie nicht über den Name.
    Erstell Dir ein Menü in der Entwicklungsumgebung, wie es Dir vorschwebt.
    Dann öffnest Du die Datei Form1.Designer.vb und schaust Dir an, wie das die Umgebung macht.
    Dann siehst Du, wie Du es abfragen musst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    könnte in etwa so aussehen:

    VB.NET-Quellcode

    1. Sub Subitems(ByVal i As ToolStripMenuItem)
    2. For Each temp As ToolStripDropDownItem In i.DropDownItems
    3. Debug.Writeline(temp.Text)
    4. If temp.DropDownItems.Count > 0 Then
    5. Subitems(temp)
    6. End If
    7. Next
    8. Debug.Writeline("=============")
    9. End Sub
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Mist ich steh irgendwie immer noch auf dem schlauch -> Ziel ist es halt eine nachträgliche Nutzerverwaltung einzubauen die im Prinzip Nutzern das Menü sperren kann.

    VB.NET-Quellcode

    1. Private Sub gettoolbarelemnts()
    2. For Each wer In DateiToolStripMenuItem.DropDownItems
    3. MsgBox(wer.ToString)
    4. NextFor Each wer In BenutzerverwaltungToolStripMenuItem.DropDownItems
    5. MsgBox(wer.ToString)
    6. NextFor Each wer In ToolStripMenuItem1.DropDownItems
    7. MsgBox(wer.ToString)
    8. Next
    9. End Sub
    10. Sub Subitems(ByVal i As ToolStripMenuItem)For Each temp As ToolStripDropDownItem In i.DropDownItems
    11. Debug.Writeline(temp.Text)
    12. If temp.DropDownItems.Count > 0 Then
    13. Subitems(temp)
    14. End If
    15. NextDebug.Writeline("=============")
    16. End Sub

    => also derzeit nutz ich das mit den Subitems nicht und das rekursive auslesen ist mir schon bekannt aber hier hängts halt irgendwie
    => das ist jetzt aktuell in meiner Main Form => das menü selbst heißt mainmenu
    => jetzt das was im Designer steht

    VB.NET-Quellcode

    1. Me.mainMenu.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.DateiToolStripMenuItem, Me.BenutzerverwaltungToolStripMenuItem, Me.ToolStripMenuItem1})
    2. Me.mainMenu.Location = New System.Drawing.Point(0, 0)
    3. Me.mainMenu.Name = "mainMenu"Me.mainMenu.Size = New System.Drawing.Size(878, 24)
    4. Me.mainMenu.TabIndex = 0
    5. Me.mainMenu.Text = "MenuStrip1"
    6. '
    7. 'DateiToolStripMenuItem
    8. 'Me.DateiToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.MeineDatenToolStripMenuItem, Me.BeendenToolStripMenuItem})
    9. Me.DateiToolStripMenuItem.Name = "DateiToolStripMenuItem"Me.DateiToolStripMenuItem.Size = New System.Drawing.Size(46, 20)
    10. Me.DateiToolStripMenuItem.Tag = "Datei"
    11. Me.DateiToolStripMenuItem.Text = "&Datei"
    12. '
    13. 'MeineDatenToolStripMenuItem
    14. '
    15. Me.MeineDatenToolStripMenuItem.Name = "MeineDatenToolStripMenuItem"Me.MeineDatenToolStripMenuItem.Size = New System.Drawing.Size(152, 22)
    16. Me.MeineDatenToolStripMenuItem.Tag = "Meine &Daten"
    17. Me.MeineDatenToolStripMenuItem.Text = "Meine &Daten"


    und im Prinzip muß ich diesen Teil Auslesen aus dem mainmenu kommend:

    VB.NET-Quellcode

    1. Me .DateiToolStripMenuItem, Me.BenutzerverwaltungToolStripMenuItem, Me.ToolStripMenuItem1

    Sorry ich bin leider neu in der Branche, mir fehlt hier und da noch das Grundverständnis :(

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „bastimw“ ()

    Wenn du meinen Code anschaust, und ihn begreifst, wirst du dein Vorhaben ohne Probleme realisieren können:
    Das ist nur Beispielcode^^

    Spoiler anzeigen

    VB.NET-Quellcode

    1. 'Für alle Items im MenuStrip
    2. For Each Item As ToolStripMenuItem In MenuStrip1.Items
    3. MessageBox.Show(Item.ToString)
    4. 'Für jedes Unteritem von Item
    5. For Each Item1 As ToolStripMenuItem In Item.DropDownItems
    6. MessageBox.Show(Item1.ToString)
    7. 'Für jedes Unteritem des Unteritems
    8. For Each Item2 As ToolStripMenuItem In Item1.DropDownItems
    9. MessageBox.Show(Item2.ToString)
    10. Next
    11. Next
    12. Next


    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    ICH DANKE DIR VIELMALS!! Auf das AS hätte ich kommen müssen, wußte nicht das sowas geht :D - also "as" und "in" in Verknüpfung war mir bisher unbekannt -- danke noch mal! (4 Zeilen und ich denk nen halben Tag darüber nach ^^)