меню winforms как массив - PullRequest
0 голосов
/ 20 июня 2009

Я знаю, что наиболее вероятно возможно получить доступ к меню winforms как массив, но я не вижу его в дизайнере меню VS2008? Я имею в виду, что мое приложение имеет типичную строку меню сверху, с несколькими элементами в каждом раскрывающемся меню. Как написано (я унаследовал этот код), каждый пункт меню имеет отдельное имя, т.е.

myMenuOption1MenuItem
myMenuOption2MenuItem
myMenuOption3MenuItem
myMenuOption4MenuItem

и т.д ...

Мне нужна возможность включить или отключить (или даже скрыть / показать) параметры меню в зависимости от привилегий пользователя, например:

For I = 0 to maxIndex
    myMenuOption(I).Enabled = myUser.IsAdministrator
Next

Очевидно, что я мог устанавливать / отменять каждый пункт меню по имени, но по многим причинам я бы предпочел использовать циклы.

Ответы [ 3 ]

2 голосов
/ 21 июня 2009

ToolStripMenuItem с выставлены через ContextMenuStrip.Items

For Each myItem As ToolStripMenuItem In myContextMenuStrip.Items
    myItem.Enabled = myUser.IsAdministrator
Next
1 голос
/ 21 июня 2009

Каждый дочерний элемент меню находится в коллекции DropDownItems - так что вы можете пройти через это (если вы используете ToolStripMenuItems, а не меню более старого стиля).

0 голосов
/ 23 июля 2010
For Each Menu As ToolStripMenuItem In MenuPrincipal.Items

    For Each Item As ToolStripItem In Menu.DropDownItems
        If TypeOf (Item) Is ToolStripMenuItem Then
            AddHandler Item.Click, AddressOf Menu_OnClick
        End If

    Next

Next

Таким образом, вы можете получить доступ к каждому из событий следующим образом:

Private Sub Menu_OnClick(ByVal sender As Object, ByVal e As System.EventArgs)

    Dim Frm As Form = GetFormByName(sender.name)
    If sender.Tag = "Modal" Then
        Frm.ShowDialog(Me)
    ElseIf sender.Tag = "Modeless" Then
        Frm.Show(Me)
    Else
        OpenForm(Frm, True)
    End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...