vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: MenuStrip prüfen ob Item vorhanden 
Autor: Manfred X
Datum: 06.03.12 15:35

Hier mal ein komplettes Beispiel.
Die start-Form:
Public Class start
 
    Dim subform1 As New dialogform
 
    'Kann auch im Designer erstellt werden 
    Dim WithEvents menustrip1 As New MenuStrip With {.Parent = Me}
    Dim WithEvents mainmenu As New ToolStripMenuItem
    Dim WithEvents showsubform As New Button With _
    {.Parent = Me, .Text = "Show Subform", .Top = 40}
 
    Private Sub start_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load
 
        mainmenu.Text = "MainMenu"
        mainmenu.Name = "keyofmainmenu"
        menustrip1.Items.Add(mainmenu)
    End Sub
 
    Private Sub showsubform_Click(ByVal sender As Object, _
                  ByVal e As System.EventArgs) Handles showsubform.Click
        subform1.MainFormMenuStrip = menustrip1 'Übergabe der Menureferenz
        subform1.ShowDialog()  
    End Sub
End Class
Die DialogForm:
Public Class dialogform
 
    Dim WithEvents checkitem As New Button With _
    {.Parent = Me, .Text = "Check Menu Item", .Width = 200}
 
    Dim _MenuStrip As MenuStrip
 
    Public Property MainFormMenuStrip() As MenuStrip
        Set(ByVal value As MenuStrip)
            _MenuStrip = value
        End Set
        Get
            Return _MenuStrip
        End Get
    End Property
 
    Private Sub checkitem_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles checkitem.Click
 
        If _MenuStrip Is Nothing Then Exit Sub
        Dim mainmenu_index As Integer = _MenuStrip.Items.IndexOfKey( _
          "keyofmainmenu")
        If mainmenu_index < 0 Then Exit Sub
 
        Dim mainmenu As ToolStripMenuItem = _
            CType(_MenuStrip.Items(mainmenu_index), ToolStripMenuItem)
 
        If mainmenu.DropDownItems.ContainsKey("keyofsubitem") Then Exit Sub
 
        Dim subitem As New ToolStripMenuItem
        subitem.Text = "Sub Item"
        subitem.Name = "keyofsubitem"
        mainmenu.DropDownItems.Add(subitem)
    End Sub
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

MenuStrip prüfen ob Item vorhanden 
Autor: xater
Datum: 04.03.12 20:58

Hallo zusammen,

leider kein passendes Ergebnis über die Suchmaschinen gefunden. Meine Frage lautet:

Wie kann ich prüfen, ob ein bestimmter Menüpunkt in einem MenuStrip bereits vorhanden ist ?

LG,

Michael
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: Manfred X
Datum: 05.03.12 06:03

Hallo!

Nichts gefunden? Ist mir unerfindlich.

Ich vermute, du meinst mit "Menüpunkt" ein ToolstripMenuItem.
In dem Fall gibt verschiedene Möglichkeiten.
'Zunächst ein Item erstellen
Dim tsi As New ToolStripMenuItem
tsi.Text = "Item1"
tsi.Name = "Key1"   'Name fungiert auch als Key
 
'Menustrip erstellen
Dim ms As New MenuStrip
'Das Item hinzufügen
ms.Items.Add(tsi)
 
'Items-Auflistung (ToolStripItemCollection) durchsuchen ....
 
'Suche nach der Referenz auf das Item
If ms.Items.Contains(tsi) Then
  Dim index As Integer = ms.Items.IndexOf(tsi)
  MsgBox("Item ist im Menü bereits enthalten: " & CStr(index))
End If
 
'Suche nach dem Item-Schlüssel
If ms.Items.ContainsKey("Key1") Then
   Dim index As Integer = ms.Items.IndexOfKey("Key1")
   MsgBox("Schlüssel ist im Menü bereits enthalten:" & CStr(index))
End If
 
'Suche nach dem Text
For i As Integer = 0 To ms.Items.Count - 1
   If ms.Items(i).Text.ToUpper.Trim = "ITEM1" Then
      MsgBox("Text ist im Menü bereits enthalten")
      Exit For
   End If
Next i
Die Suche liefert ggf. kein eindeutiges Ergebnis.
Items, Schlüsselwerte oder Texte können mehrfach in der
Auflistung enthalten sein.
(DropDownItems ggf. rekursiv durchsuchen.)

Beitrag wurde zuletzt am 05.03.12 um 06:27:41 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: xater
Datum: 05.03.12 12:42

Hallo,

danke für deine Antwort... Hab ich denn ein Denkfehler gemacht ?

        Dim tsi As New ToolStripMenuItem
        tsi.Name = "test"   'Name fungiert auch als Key
 
        If start.MenuStrip1.Items.Contains(tsi) Then
            Dim index As Integer = start.MenuStrip1.Items.IndexOf(tsi)
            MsgBox("Item ist im Menü bereits enthalten: " & CStr(index))
        End If
In meinem Menustrip ist ein Hauptmenüpunkt mit dem Namen "test" vorhanden. Allerdings wird dieser nicht gefunden... LG,

Michael
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: ModeratorDaveS (Moderator)
Datum: 05.03.12 13:23

.Contains() vergleicht die Objektreferenzen, nicht die Namen. Mit
    MenuStrip1.Items.Add(tsi)
vor der Schleife wird das MenuItem schon gefunden. Wenn du nach Namen suchst kannst du das mit
    If MenuStrip1.Items.ContainsKey(tsi.Name) Then
tun, zB. Oder auch so
    If MenuStrip1.Items(tsi.Name) IsNot Nothing Then

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: xater
Datum: 05.03.12 13:40

Hallo Dave,

vielen lieben Dank ! Funktioniert wunderbar ! Danke natürlich auch an Manfred und dessen Vorlage..! =)

*CLOSED*

LG,

Michael
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: xater
Datum: 05.03.12 18:31

Ok ganz gegessen ist das Thema doch noch nicht für mich. Sicherlich habe ich nen ganz dummen Fehler gemacht. Über Verbesserungsvorschläge wär ich jedoch trotzdem dankbar !

        'Prüfen ob Hauptmenüelemt vorhanden ist
        If start.MenuStrip1.Items.ContainsKey(mainmenu.Name) = True Then
            Dim mainindex As Integer = start.MenuStrip1.Items.IndexOf(mainmenu)
            MsgBox("Hauptmenü Item ist im Menü bereits enthalten: " & CStr( _
              mainindex))
 
            Dim MenItem As ToolStripMenuItem = CType(mainmenu, _
              ToolStripMenuItem)
            'Prüft ob Submenüelemt vorhanden
            If MenItem.DropDownItems.ContainsKey(submenu.Name) = True Then
                Dim subindex As Integer = MenItem.DropDownItems.IndexOf(submenu)
                MsgBox("Untermenü Item ist im Menü bereits enthalten: " & CStr( _
                  subindex))
            Else
                MenItem.DropDownItems.Add(mit(1))
            End If
        End If
Kann mir jemand sagen, warum meine zweite IF-Bedingung immer False ist ? Selbst wenn das Element vorhanden ist... Ich denke es liegt an:

Dim MenItem As ToolStripMenuItem = CType(mainmenu, ToolStripMenuItem)
Lieg ich mit meiner Vermutung richtig ? LG,

Michael
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: Manfred X
Datum: 06.03.12 06:18

Hallo!

Und warum nicht einfach so ... ??
Dim menustrip1 As New MenuStrip
Dim mainmenu As New ToolStripMenuItem
Dim submenu As New ToolStripMenuItem
 
'Auskommentieren dieser Zeile(n) entscheidet darüber, 
'welche Bedingung gegeben ist
mainmenu.DropDownItems.Add(submenu)
menustrip1.Items.Add(mainmenu)
 
 
If menustrip1.Items.Contains(mainmenu) Then
   If mainmenu.DropDownItems.Contains(submenu) Then
      MsgBox("Submenu ist im Dropdown des Mainmenu bereits vorhanden")
   Else
      mainmenu.DropDownItems.Add(submenu)
   End If
Else
   MsgBox("Mainmenu ist im Menustrip nicht enthalten")
End If
Oder unter Verwendung der IndexOf-Methode ...
Dim mainmenu_itemindex As Integer = menustrip1.Items.IndexOf(mainmenu)
Dim submenu_dropdownindex As Integer = mainmenu.DropDownItems.IndexOf(submenu)
 
If mainmenu_itemindex < 0 Then
   MsgBox("Mainmenu nicht im Menustrip enthalten")
Else
   MsgBox("Mainmenu im Menustrip enthalten: " & CStr(mainmenu_itemindex))
 
   If submenu_dropdownindex < 0 Then
      mainmenu.DropDownItems.Add(submenu)
   Else
      MsgBox("Submenu im Maimenu enthalten: " & CStr(submenu_dropdownindex))
   End If
End If
Wenn Du ein Item erstellst, das eine Referenz auf eine Klasseninstanz
ohne Typkonvertierung erhalten soll, benötigst Du kein CTYPE - es
schadet aber auch nicht.
Dim menitem As ToolStripMenuItem = mainmenu

Die zweite IF-Bedingung in Deinem Code wird "false", wenn das "SubMenu" in
den DropDownItems des "MainMenu" nicht vorhanden ist oder wenn der Name des
"Submenu" geändert worden ist. Schau Dir in Deinem Code auch mal die
Else-Bedingung an.

Mach Dir den Unterschied zwischen "Contains" (ToolstripItem-Parameter) und
"ContainsKey" (String-Parameter) noch mal klar.

MfG
Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: xater
Datum: 06.03.12 10:12

Also irgendwie geht das nicht bei mir.. Zur Verständlichung:

menustrip1 ist ein Menü meiner Form "start". Daher gibt es diese ja schon und muss nicht mit new deklariert werden, oder ?

mainmenu ist ein string und enthält als "mainmenu = "Plugins"
submenu ist ein string und enthält als "submenu = "test"

Im Hauptmenü gibt es bereits einen Punkt namens "Plugins". Daher darf kein neuer Hauptmenüpunkt angelegt werden. Als DropDownItem von "Plugins" gibt es jedoch noch NICHT das Item "test". Dieses muss also angelegt werden.

Daher:

1. Prüfen ob Hauptmenüpunkt vorhanden, wenn nicht anlegen
2. Prüfen ob Submenüpunkt in Hauptmenüpunkt vorhanden, wenn nicht anlegen

Sorry wenn ich mich weiter oben falsch ausgedrückt habe... =/ LG,


Michael

Beitrag wurde zuletzt am 06.03.12 um 10:18:38 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: Manfred X
Datum: 06.03.12 10:39

Mit der Problemanalyse "Irgendwie geht es bei mir nicht" mußt Du
Dich an einen Hellseher wenden.

Der Code, den ich gepostet habe, sollte funktionieren.

Wie sind mainmenu und Submenu als Arrays deklariert?
Was bedeutet mainmenu(0) = "Plugins"?
Ist mainmenu ein Stringarray?
Oder ein Array, dessen Elemente ToolStripMenuItems sind?
In dem Fall: Worauf wird der String (??) "Plugins" zugewiesen? Name? Text?

Nur mal zur "Verdeutlichung" ...
Dim Plugins As New ToolStripMenuItem
With Plugins
   .Text = "Plugins"
   .Name = "Plugins"
   .DropDownItems.Add("Plugins")
End With
"Plugins" kann alles möglich bedeuten.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: xater
Datum: 06.03.12 10:50

Entschuldige bitte, ich habe meinen Beitrag oben bereits bearbeitet. Es ist kein Array, sondern ein einfacher String. also:

mainmenu = "Plugin" und
submenu = "test"

Aber danke für die Antwort =) Bin leider bei VB noch in den Anfangsphasen, da ich in der Arbeit immer nur Websprachen programmiere.. ;) LG,


Michael
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: xater
Datum: 06.03.12 11:43

So jetzt noch mal zur Spezifikation...

Folgender Code habe ich beim Button Click Ereignis auf der Form "Form1", der nicht funktioniert ;) :

        Dim mainmenu As New ToolStripMenuItem
        With mainmenu
            .Text = "Plugins"
            .Name = "Plugins"
            .DropDownItems.Add("test")
        End With
 
        Dim submenu As New ToolStripMenuItem
        With submenu
            .Text = "test"
            .Name = "test"
        End With
 
        Dim mainmenu_itemindex As Integer = start.MenuStrip1.Items.IndexOf( _
          MainMenu)
        Dim submenu_dropdownindex As Integer = MainMenu.DropDownItems.IndexOf( _
        submenu)
 
        If mainmenu_itemindex < 0 Then
            MsgBox("Mainmenu nicht im Menustrip enthalten")
 
            If submenu_dropdownindex < 0 Then
                mainmenu.DropDownItems.Add(submenu)
            Else
                MsgBox("Submenu im Maimenu enthalten: " & CStr( _
                  submenu_dropdownindex))
            End If
        Else
            MsgBox("Mainmenu im Menustrip enthalten: " & CStr( _
              mainmenu_itemindex))
 
            If submenu_dropdownindex < 0 Then
                MainMenu.DropDownItems.Add(submenu)
            Else
                MsgBox("Submenu im Maimenu enthalten: " & CStr( _
                  submenu_dropdownindex))
            End If
        End If
Ich habe ein Menü in meiner Hauptform "start". Dort ist bereits der Menüpunkt "Plugins" vorhanden, allerdings noch kein Unterpunkt. Somit müsste beim Klick auf den Button kein neuer Hauptmenüpunkt hinzugefügt werden, sondern nur der Untermenüpunkt "test".

Habe ich mich diesmal verständlicher ausgedrückt ? LG,

Michael
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: Manfred X
Datum: 06.03.12 12:05

Hallo!

Du verstehst den Unterschied zwischen einer Objektreferenz
und einem Eigenschaftswert einfach nicht.
Das Item "Mainmenu" ist in Deinem Code nicht auf "menustrip1" zugeordnet.

 
        Dim mainmenu As New ToolStripMenuItem
        start.menustrip1.Items.Add(mainmenu) 'entfällt, falls bereits in 
        ' MenuStrip1 vorhanden
 
        'Referenz auf Mainmenu in "start"/menustrip1 (Annahme .Name= 
        ' "keyofmainmenu")
        Dim MainMenu As ToolStripMenuItem = _
         CType(start.menustrip1.Items(start.menustrip1.Items.IndexOfKey( _
         "keyofmainmenu")), ToolStripMenuItem)
 
        With mainmenu
            .Text = "Plugins"
            .Name = "Plugins"
            Dim tsi As ToolStripMenuItem = CType(.DropDownItems.Add("test"), _
              ToolStripMenuItem)
            tsi.Name = "keyoftest" 'Schlüssel setzen, nachdem Objektreferenz 
            ' besorgt 
        End With
 
        Dim submenu As New ToolStripMenuItem
        With submenu
            .Text = "test"
            .Name = "keyoftest"
        End With
 
        Dim mainmenu_itemindex As Integer = MenuStrip1.Items.IndexOf( _
          mainmenu)
        'Schlüssel prüfen 
        Dim submenu_dropdownindex As Integer = _
          mainmenu.DropDownItems.IndexOfKey("keyoftest")
 
        If mainmenu_itemindex < 0 Then
            MsgBox("Mainmenu nicht im Menustrip enthalten")
 
            If submenu_dropdownindex < 0 Then
                mainmenu.DropDownItems.Add(submenu)
            Else
                MsgBox("Submenu im Maimenu enthalten: " & CStr( _
                  submenu_dropdownindex))
            End If
        Else
            MsgBox("Mainmenu im Menustrip enthalten: " & CStr( _
              mainmenu_itemindex))
 
            If submenu_dropdownindex < 0 Then
                mainmenu.DropDownItems.Add(submenu)
            Else
                MsgBox("Submenu im Maimenu enthalten: " & CStr( _
                  submenu_dropdownindex))
            End If
        End If
    End Sub
Ich vermute, du mußt direkt im MainMenu-Item des MenuStrip1 nach dem
Item Test suchen.

Beitrag wurde zuletzt am 06.03.12 um 12:21:03 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: xater
Datum: 06.03.12 12:37

Also ich habe das jetzt eingebaut.. Jedes Mal wenn ich auf den Button drücke, wird jetzt ein neues Menü "Plugins" mit dem Unterpunkt "test" erzeugt. Wenn ich da 10 Mal drauf klicke, habe ich auch 10 Menüeinträge. Dabei soll ja geprüft werden ob der Eintrag schon vorhanden ist. Ich habe ganz ehrlich gedacht, dass so ein doofer Menüeintrag leichter ist.. =D Und sobald es so geht wie ich das möchte, werde ich mir auch deinen Rat zu Herzen nehmen und mir die Eigenschaften sowie die Objektreferenzen genauer anschauen ;) LG,

Michael
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: Manfred X
Datum: 06.03.12 12:40

Du mußt Dir die Referenz auf das schon existierende "MainMenu"
aus dem Formular "start" besorgen. Zu dem Zweck muss beim
Erstellen des "mainmenu" in "start" die Name-Eigenschaft
mit einem eindeutigen Schlüsselstring belegt werden
(siehe oben). Die ersten beiden Zeilen entfallen.

Beitrag wurde zuletzt am 06.03.12 um 12:44:46 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: xater
Datum: 06.03.12 13:28

Huhu... ;)

also jetzt bekomme ich die Meldung "ArgumentOutOfRange Exception wurde nicht behandelt" mit "Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein. Parametername: index". Und zwar bei folgender Stelle:

Dim MainMenu As ToolStripMenuItem = _
         CType(start.menustrip1.Items(start.menustrip1.Items.IndexOfKey( _
         "keyofmainmenu")), ToolStripMenuItem)
Ich muss dazu erwähnen, dass ich momentan ne Ausbildung zum Anwendungsentwickler mache und bei mir im Geschäft leider niemand fragen kann. Die anderen programmieren alle 4D und ich bin normal in der Webentwicklung wie schon erwähnt. Daher bitte ich dich mein ständiges Nachfragen zu entschuldigen. =/ LG,

Michael
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: Manfred X
Datum: 06.03.12 13:42

Du hast den Wert der Name-Eigenschaft des "MainMenu"-Items
im Formular "start" nicht auf "keyofmainmenu" gesetzt.
Die IndexOfKey-Methode kann deshalb diesen Key in der Item-Collection
von MenuStrip1 nicht finden und liefert deshalb -1 zurück.
So einen Index gibt es natürlich nicht. Deshalb die Fehlermeldung.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: xater
Datum: 06.03.12 14:04

Ok soweit wird jetzt auf jeden Fall geprüft, ob das Hauptelement existiert und er legt auch keines an, wenn eins da ist. Ich hab den Code wie folgt geändert:

    Dim MainMenu As ToolStripMenuItem = _
         CType(start.MenuStrip1.Items(start.MenuStrip1.Items.IndexOfKey( _
         "Plugins")), ToolStripMenuItem)
Allerdings legt er jetzt ganz viele Submenüs an, wenn ich mehrmals auf den Button drücke mit "test". Dies liegt denke ich mal daran, weil ich noch kein Objektverweis auf das Dropdownitem gelegt habe ? Bin ich da auf dem richtigen Weg ? LG,


Michael
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: Manfred X
Datum: 06.03.12 14:31

Hallo!

Wenn Du den DropDownItems beim Erstellen einen eindeutigen
Schlüsselstring (Name-Eigenschaft) zuweist und Du nur wissen
willst, ob das Item mit einem bestimmten Schlüssel bereits
in der Collection vorhanden ist, genügt die Suche mit
IndexOfKey oder ContainsKey.

Eine Referenz benötigst Du nur, wenn Du auf Eigenschaften
eines bereits vorhandenen Items zugreifen willst.

Beitrag wurde zuletzt am 06.03.12 um 14:33:10 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: xater
Datum: 06.03.12 14:57

In etwa so: ?

    Private Sub Button1_Click_1(sender As System.Object, e As System.EventArgs) _
      Handles Button1.Click
        Dim menuitems() As String = myplugin.MenuItemTexte
 
        'Dim mainmenu As New ToolStripMenuItem
        'start.MenuStrip1.Items.Add(mainmenu) 'entfällt, falls bereits in
 
        ' MenuStrip1 vorhanden
        'Referenz auf Mainmenu in "start"/menustrip1 (Annahme .Name= 
        ' "keyofmainmenu")
        Dim MainMenu As ToolStripMenuItem = _
         CType(start.MenuStrip1.Items(start.MenuStrip1.Items.IndexOfKey( _
         "Plugins")), ToolStripMenuItem)
 
        With mainmenu
            .Text = "Plugins"
            .Name = "Plugins"
            Dim tsi As ToolStripMenuItem = CType(.DropDownItems.Add("test"),  _
              ToolStripMenuItem)
            tsi.Name = "keyoftest" 'Schlüssel setzen, nachdem Objektreferenz 
            ' besorgt 
        End With
 
        Dim submenu As New ToolStripMenuItem
        With submenu
            .Text = "test"
            .Name = "keyoftest"
        End With
 
        Dim mainmenu_itemindex As Integer = start.MenuStrip1.Items.IndexOf( _
          MainMenu)
        'Schlüssel prüfen 
        Dim submenu_dropdownindex As Integer = _
          MainMenu.DropDownItems.IndexOfKey("keyoftest")     ' < 
          ' ========================== INDEXOFKEY wie du geschrieben hast
 
        If mainmenu_itemindex < 0 Then
            MsgBox("Mainmenu nicht im Menustrip enthalten")
 
            If submenu_dropdownindex < 0 Then
                mainmenu.DropDownItems.Add(submenu)
            Else
                MsgBox("Submenu im Maimenu enthalten: " & CStr( _
                  submenu_dropdownindex))
            End If
        Else
            MsgBox("Mainmenu im Menustrip enthalten: " & CStr( _
              mainmenu_itemindex))
 
            If submenu_dropdownindex < 0 Then
                mainmenu.DropDownItems.Add(submenu)
            Else
                MsgBox("Submenu im Maimenu enthalten: " & CStr( _
                  submenu_dropdownindex))
            End If
        End If
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: xater
Datum: 06.03.12 14:58

Ich habe im Code die Stelle markiert, die ich geändert habe.. Sieht man leider ein wenig doof wegen dem Zeilenumbruch...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MenuStrip prüfen ob Item vorhanden 
Autor: xater
Datum: 06.03.12 16:22

VIelen vielen Dank Manfred !!!

Also jetzt klappt es auch soweit. Allerdings muss ich jetzt meinen Code noch bereinigen. Hab da jetzt viel unnötige Kommentare und sicher auch noch Sachen drin, die ich eigentlich nicht gebrauchen kann. Aber hier mal der Code, so wie er bisher funktioniert. Eine bereinigte Variante werde ich heute oder morgen hier posten, falls dies nochmal jemand gebrauchen kann.. ;)

        'Dim mainmenu As New ToolStripMenuItem
        'start.MenuStrip1.Items.Add(mainmenu) 'entfällt, falls bereits in
 
        ' MenuStrip1 vorhanden
        'Referenz auf Mainmenu in "start"/menustrip1 (Annahme .Name= 
        ' "keyofmainmenu")
        Dim MainMenu As ToolStripMenuItem = _
         CType(start.MenuStrip1.Items(start.MenuStrip1.Items.IndexOfKey( _
         "Plugins")), ToolStripMenuItem)
 
        With mainmenu
            .Text = "Plugins"
            .Name = "Plugins"
            'Dim tsi As ToolStripMenuItem = CType(.DropDownItems.Add("test"),  _
            'ToolStripMenuItem)
            'tsi.Name = "keyoftest" 'Schlüssel setzen, nachdem Objektreferenz 
            ' besorgt 
        End With
 
        Dim submenu As New ToolStripMenuItem
        With submenu
            .Text = "test"
            .Name = "keyoftest"
        End With
 
        Dim mainmenu_itemindex As Integer = start.MenuStrip1.Items.IndexOf( _
          MainMenu)
        'Schlüssel prüfen 
        Dim submenu_dropdownindex As Integer = _
          MainMenu.DropDownItems.IndexOfKey("keyoftest")
 
        If mainmenu_itemindex < 0 Then
            MsgBox("Mainmenu nicht im Menustrip enthalten")
 
            If MainMenu.DropDownItems.ContainsKey("keyofsubitem") Then Exit Sub
 
            Dim subitem As New ToolStripMenuItem
            subitem.Text = "Sub Item"
            subitem.Name = "keyofsubitem"
            MainMenu.DropDownItems.Add(subitem)
        Else
            MsgBox("Mainmenu im Menustrip enthalten: " & CStr( _
              mainmenu_itemindex))
 
            If MainMenu.DropDownItems.ContainsKey("keyofsubitem") Then Exit Sub
 
            Dim subitem As New ToolStripMenuItem
            subitem.Text = "Sub Item"
            subitem.Name = "keyofsubitem"
            MainMenu.DropDownItems.Add(subitem)
        End If
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel