пункты меню

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Arto
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 16.04.2002 (Вт) 18:23

пункты меню

Сообщение Arto » 26.03.2009 (Чт) 11:29

Здравствуйте
как можно в цикле пройти по все пунктам Меню MDI формы
Спасибо

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: пункты меню

Сообщение Viper » 26.03.2009 (Чт) 12:15

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

Arto
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 16.04.2002 (Вт) 18:23

Re: пункты меню

Сообщение Arto » 26.03.2009 (Чт) 12:17

Viper писал(а):Поскольку пункты меню соедржатся в коллекции, то цикл For Each легко поможет реализовать перечисление.

а нельзя ли поподробней что то у меня получается
С уважением

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: пункты меню

Сообщение Viper » 26.03.2009 (Чт) 12:32

Arto писал(а):а нельзя ли поподробней что то у меня получается
Получается? Или не получается? Если не получается, то что? Если получается, то, опять же, что?
Должно быть типо так
Код: Выделить всё
Dim mnuItem As MenuItem
    For Each mnuItem In Me.Menu.MenuItems
        Debug.Print mnuItem.Name
    Next
Весь мир матрица, а мы в нем потоки байтов!

Arto
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 16.04.2002 (Вт) 18:23

Re: пункты меню

Сообщение Arto » 26.03.2009 (Чт) 12:53

Viper писал(а):
Arto писал(а):а нельзя ли поподробней что то у меня получается
Получается? Или не получается? Если не получается, то что? Если получается, то, опять же, что?
Должно быть типо так
Код: Выделить всё
Dim mnuItem As MenuItem
    For Each mnuItem In Me.Menu.MenuItems
        Debug.Print mnuItem.Name
    Next


нет не получается
получаю только верхние меню а вот dropdownmenu получить не могу

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: пункты меню

Сообщение MIT » 26.03.2009 (Чт) 13:19

Arto писал(а):а вот dropdownmenu получить не могу
А вот для dropdownmenu надо разбирать свою коллекцию. Если у элемента есть подменю, то обрабатывать их надо отдельно. Что-то типа рекурсии.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Arto
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 16.04.2002 (Вт) 18:23

Re: пункты меню

Сообщение Arto » 26.03.2009 (Чт) 13:29

MIT писал(а):
Arto писал(а):а вот dropdownmenu получить не могу
А вот для dropdownmenu надо разбирать свою коллекцию. Если у элемента есть подменю, то обрабатывать их надо отдельно. Что-то типа рекурсии.

Буду пробовать

Arto
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 16.04.2002 (Вт) 18:23

Re: пункты меню

Сообщение Arto » 26.03.2009 (Чт) 13:38

вот решение может кому понадобится
Код: Выделить всё
For Each item As ToolStripMenuItem In Me.MenuStrip1.Items
    For i As Integer = 0 To item.DropDownItems.Count - 1
        MsgBox(item.DropDownItems(i).Text)
    Next
Next

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: пункты меню

Сообщение MIT » 26.03.2009 (Чт) 13:46

А если у item.DropDownItems(i) есть свое подменю? А у того свое?
ИМНИП DropDownItems может быть Nothing`ом, соответственно item.DropDownItems.Count вызовет исключение
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: пункты меню

Сообщение Nord777 » 26.03.2009 (Чт) 13:48

Этот код не перебирает все саб'итемы.

надо как-то так

Код: Выделить всё
PrintAllMenuItems(Me.MenuStrip.Items)
Код: Выделить всё
   Sub PrintAllMenuItems(ByVal MnuCol As ToolStripItemCollection)
      Dim mi As ToolStripMenuItem

      For Each it As ToolStripItem In MnuCol
         If Not (TypeOf it Is ToolStripMenuItem) Then Continue For

         mi = DirectCast(it, ToolStripMenuItem)
         Debug.WriteLine(mi.Text)
         PrintAllMenuItems(mi.DropDownItems)
      Next

   End Sub
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Arto
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 125
Зарегистрирован: 16.04.2002 (Вт) 18:23

Re: пункты меню

Сообщение Arto » 26.03.2009 (Чт) 14:11

Nord777 писал(а):Этот код не перебирает все саб'итемы.

надо как-то так

Код: Выделить всё
PrintAllMenuItems(Me.MenuStrip.Items)
Код: Выделить всё
   Sub PrintAllMenuItems(ByVal MnuCol As ToolStripItemCollection)
      Dim mi As ToolStripMenuItem

      For Each it As ToolStripItem In MnuCol
         If Not (TypeOf it Is ToolStripMenuItem) Then Continue For

         mi = DirectCast(it, ToolStripMenuItem)
         Debug.WriteLine(mi.Text)
         PrintAllMenuItems(mi.DropDownItems)
      Next

   End Sub

Спасибо


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46

    TopList  
cron