Элементы меню и новый редактор меню 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 команд контекстного меню, перейдите в режим редактирования имен щелчком правой кнопкой мыши.
Примечание
Поскольку обычные и контекстные меню управляются на программном уровне, ваше приложение может построить меню с нуля на стадии выполнения программы!