Announcement

Collapse
No announcement yet.

Name eines Menüeintrages in VB.2003

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Name eines Menüeintrages in VB.2003

    Hallo zusammen,
    ich benötige den Namen meiner Menüs in einer Form.
    In VB2005 mach ich die wie folgt:


    Code:
    For Each MnuStr As ToolStripMenuItem In Me.MenuStrp.Items
            Select Case MnuStr.Name
    Wie geht das in VB 2003??? Hat jemand ne Idee...?

    Danke

  • #2
    Code:
    Wie geht das in VB 2003??? Hat jemand ne Idee...?
    Gar nicht Toolstrips gibt's erst seit dem 2.0er Framework.

    Comment


    • #3
      Ok.
      Es gibt aber Menüs.

      Code:
      For Each Mnu As MenuItem In Me.MainMenu.MenuItems
              Select Case Menu.Name
      Die Property Name gibt es aber nicht...
      Mit der Property Text bekomme ich nur die Beschriftung, nicht den Namen.

      Gibt es also eine Möglichkeit den Namen des Menüs ( Item ) zu bestimmen

      Comment


      • #4
        WEnn es die Property Name nicht gibt kannst du davon ausgehen dass du auch keinen Namen bestimmen kannst.
        Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

        Comment


        • #5
          Im 1.1 Framework hatten die MenuItems keinen Namen.
          Aber wenn du versuchst denn zu bestimmen geh ich mal davon aus das du glaubst irgendwo den MenuItems einen Namen gegeben zu haben.

          Du verwechselst jetzt aber nicht den Namen eines Controls mit dem Variablennamen den ein Control auf der Form hat oder?

          Comment


          • #6
            Also. Wenn ich in VB2003 ein MainMenu auf die Form ziehe und dann ein MenuItem anklicke sehe ich in den Eigenschaften (Name). Die Beschreibung dazu lautet:
            Gibt den im Code zum Identifizieren des Objekts verwendeten Namen an.

            Wenn ich also einen Namen vergeben kann, dann muss ich den doch auch auslesen können....

            Comment


            • #7
              Kenne nun VB.NET nicht, aber

              Gibt den im Code zum Identifizieren des Objekts verwendeten Namen an.
              "den im Code" ist für mich eine Variable....

              Was hast du für einen "Namen" vergeben? Wie lt. der Variablenname? Stimmen diese überein?
              Christian

              Comment


              • #8
                Ich habe für jedes MenuItem einen anderen Namen, aus diesem Grund möchte ich auch uber einen Select eine Unterscheidung haben....

                Wenn ich aber per code da ran gehen bekomme ich die Property gar nicht...

                siehe mein 2. Post zu diesem Thema

                Comment


                • #9
                  Es ist hier doch zu Unterscheiden zwischen

                  MenuItem test=new MenuItem

                  und

                  test.Name=Name_des_Items;

                  Du wirst mit diesem "Namen" wohl den Variablennamen test vergeben und wenn es in 1.1 keine Property Namen gibt kannst du test.Name=... nicht machen

                  Des Weiteren prüfe einfach

                  Was hast du für einen "Namen" vergeben? Wie lt. der Variablenname? Stimmen diese überein?
                  Christian

                  Comment


                  • #10
                    Was hast du für einen "Namen" vergeben? Wie lt. der Variablenname? Stimmen diese überein?
                    Mir ist nicht klar wie du das meinst...

                    Ich habe oben beschrieben, wie ich das Menü anlege und den Namen Vergebe...

                    Ich weiss aber nicht wie ich per Code da ran kommen soll...

                    Wie soll ich jetzt nachsehen ob die Namen übereinstimmen..?

                    Ich habe in den Eigenschaften (Name) zb. mnuChangeUser benutzt...

                    Comment


                    • #11
                      Originally posted by M Merlin View Post
                      Ich habe oben beschrieben, wie ich das Menü anlege und den Namen Vergebe...

                      Ich weiss aber nicht wie ich per Code da ran kommen soll...

                      Wie soll ich jetzt nachsehen ob die Namen übereinstimmen..?
                      Schau in den vom Designer erzeugten Code nach: Das, was dort (in dem Abschnitt für das betreffende MenuItem) steht, kann zugewiesen und dann auch ausgelesen werden.

                      Jürgen

                      Comment


                      • #12
                        Code:
                          Friend WithEvents mnuChangeUser As System.Windows.Forms.MenuItem
                        
                        Me.mnuChangeUser = New System.Windows.Forms.MenuItem
                        
                          Me.MainMenu.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.mnuData, Me.mnuChangeUser, Me.mnuEnd, Me.MenuItem3})
                        
                           'mnuChangeUser
                            '
                            Me.mnuChangeUser.Index = 1
                            Me.mnuChangeUser.Text = "Abme&lden"
                        Bedeutet das, dass ich an den Namen nicht rankomme..?

                        Das Ding heißt doch Me.mnuChangeUser und ist ein MenuItem. Gibt es eine andere Möglichkeit, dass ich alle MenuItems in meinr Form durchlaufe und nach der Bezeichnung, in diesem Fall mnuChangeUser auswerte...?
                        Zuletzt editiert von M Merlin; 22.04.2009, 10:02.

                        Comment


                        • #13
                          Bedeutet das, dass ich an den Namen nicht rankomme..?

                          Das Ding heißt doch Me.mnuChangeUser und ist ein MenuItem. Gibt es eine andere Möglichkeit, dass ich alle MenuItems in meinr Form durchlaufe und nach der Bezeichnung, in diesem Fall mnuChangeUser auswerte...?
                          Wenn du das über den Variablennamen machen willst müßtest du per Reflection die Member der Form auswerten schauen ob diese Member auf ein MenuItems verweisen und könntest dann den Namen des Form Members also z.B. mnuChangeUser benutzen um darauf zu testen. Sehr umständlich.

                          Warum möchtest du den über die MenuItems iterieren? Es sollte eine vernünftige Lösung für dein Problem geben ohne die Namen der MenuItems kennen zu müssen. Wenn man Logik an Namen von Dingen hängt hört sich das für mich immer nach Lösungsmustern aus Scriptsprachen an.

                          Comment


                          • #14
                            Das Problem ist aus einer sehr komplexen Lösung ( Project in VB2005 ) entstanden.
                            Hier der Code ( VB2005 )
                            Code:
                            For Each MnuStr As ToolStripMenuItem In Me.MenuStrp.Items
                                    Select Case MnuStr.Name
                                      Case "mnuChangeUser", "mnuEnd", "mnuQuestion"
                                        Continue For
                                      Case Else
                                        For Each Mnus As ToolStripItem In MnuStr.DropDownItems
                                          If TypeOf Mnus Is ToolStripMenuItem Then
                                            Try
                                              MyEnabled = DirectCast([Enum].Parse(GetType(eAccessControl), Replace(Mnus.Name, "mnu", "frm") & "_Nothing"), eAccessControl)
                                              If MyAuthority.ValidateUserAuthority(PAccess, MyEnabled) = True Then
                                                CType(Mnus, ToolStripMenuItem).Enabled = False
                                              Else
                                                MyEnabled = DirectCast([Enum].Parse(GetType(eAccessControl), Replace(Mnus.Name, "mnu", "frm") & "_Read"), eAccessControl)
                                                If MyAuthority.ValidateUserAuthority(PAccess, MyEnabled) = False Then
                                                  MyEnabled = DirectCast([Enum].Parse(GetType(eAccessControl), Replace(Mnus.Name, "mnu", "frm") & "_Write"), eAccessControl)
                                                  If MyAuthority.ValidateUserAuthority(PAccess, MyEnabled) = False Then
                                                    CType(Mnus, ToolStripMenuItem).Enabled = False
                                                  End If
                                                End If
                                              End If
                                            Catch ex As Exception
                                              Throw New ArgumentException("ValidateUserAuthority - Mnu: ", Mnus.Name)
                                            End Try
                                          End If
                                        Next
                                    End Select
                                  Next
                            Das möchte ich in VB2003 abbilden...
                            Zuletzt editiert von M Merlin; 22.04.2009, 11:04.

                            Comment


                            • #15
                              OK! Die Frage lautete eigentlich nicht wie du den Namen brauchst sondern warum

                              Wenn ich den Code richtig interpretiere benutzt du den String des Namens um damit in irgendeiner Liste nachzusehen ob der User Rechte hat diesen Menupunkt zu benutzen und entsprechend das enabled Flag des Item zu setzen. Richtig?

                              Wenn der String in der Liste fix ist und du den nicht zum Beispiel der Caption des Menueintrags anpassen kannst, würde ich den entsprechenden String denn du für Überprüfung brauchst in die Tag Property des MenuItems schreiben und diese anstatt des Namens benutzen. Annahme es gab Tag schon im 1.1er Framework
                              Zuletzt editiert von Ralf Jansen; 22.04.2009, 13:12.

                              Comment

                              Working...
                              X