Иллюстрированный самоучитель по Visual Basic .NET

Элементы меню и новый редактор меню Visual Studio. Контекстные меню.

Следующий фрагмент создает в методе InitializeComponent объекты отдельных команд меню:

Me.mnuFile = New System. Windows. Forms. MenuItem()
Me.mnuNew = New System. Windows. Forms. MenuItem()
Me.mnuOpen = New System. Windows. Forms. MenuItem()

Как видно из этого фрагмента, меню File верхнего уровня тоже представлено экземпляром класса Menultem. Объекты команд включаются в экземпляр MainMenu вызовом метода AddRange класса Menultems. В следующем примере метод AddRange включает в меню сразу три команды:

Me. Mai nMenul. Menultems. AddRange(New System. Windows. Forms. Menultem()
{Me.mnuFile. Me.mnuEdit, Me.mnuHelp})

Поскольку у объектов отдельных команд тоже имеется свойство Menultems, автоматически сгенерированный код включения команд выглядит практически так же:

Me .mnuFile. Menu Items. AddRange (New System. Windows. Forms. Menul tem()_
{Me.mnuNew. Me.mnuOpen. Me.mnuExit. Me.mnuSep})

На последнем шаге IDE подключает события Click для команд меню. Сгенерированный код выглядит так:

Private Sub mnuExit_Click(ByVal sender As System. Object, _
ByVal e As System. EventArgs)Handles mnuExit. Click

Контекстные меню

В прежних версиях VB создавать контекстные меню было неудобно. В .NET контекстное меню представляется экземпляром класса ContextMenu и редактируется в визуальном режиме. Чтобы связать контекстное меню с элементом или формой, достаточно задать значение свойства ContextMenu этого элемента или формы. По стандартам Windows контекстные меню вызываются щелчком правой кнопки мыши; в .NET это происходит автоматически благодаря наследованию.

Вам не придется программировать событие MouseDown – поддержка контекстных меню реализована в классе Control, производными от которого являются формы и элементы. При перетаскивании на форму элемента ContextMenu IDE генерирует почти такой же код, как для команд главного меню:

Friend WithEvents ContextMenul As System.Windows.Forms.ContextMenu
Me.ContextMenul =New System,Windows.Forms.ContextMenu()

Так же вызывается метод AddRange:

Me.ContextMenul.MenuIterns.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuIteml})

Чтобы быстро задать значение свойства Name команд контекстного меню, перейдите в режим редактирования имен щелчком правой кнопкой мыши.

Примечание
Поскольку обычные и контекстные меню управляются на программном уровне, ваше приложение может построить меню с нуля на стадии выполнения программы!

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.