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

       

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


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

Хотя визуальное конструирование форм в книге почти не рассматривается, мы просто не могли не упомянуть новый редактор меню. Программисты VB уже давно ждали чего-то подобного. Впрочем, при всем удобстве нового редактора вы извлечете из него максимум пользы лишь при полном понимании кода, сгенерированного IDE.

Построить меню в редакторе меню (Menu Editor) несложно. Сначала с панели элементов на форму перетаскивается элемент MainMenu; на форме появляется заготовка меню (рис. 8.10).

Теперь можно переходить к вводу команд меню. При вводе очередной команды в редакторе появляются поля для ввода следующей команды или команд, находящихся на других уровнях иерархии меню (рис. 8.11). Чтобы отредактировать команду меню, созданную ранее, достаточно щелкнуть на ней (для изменения существующих меню щелчок делается на элементе MainMenu на панели под формой). Порядок команд меню изменяется операциями вырезания/вставки (эти операции работают даже в главной строке меню). Как и в прежних версиях VB, перед клавишами ускоренного вызова ставится префикс &. На рис. 8.11 показано меню с клавишей ускоренного вызова и разделительной чертой.

Прежде чем переходить к коду, сгенерированному для меню на рис. 8.11, необходимо знать, что меню формы инкапсулируется в классе System.Windows.Forms.MainMenu. Объект MainMenu выполняет функции контейнера для экземпляров Menu Item. Для организации подменю в экземплярах Menultem определяется свойство Menultems; значение этого свойства представляет собой коллекцию класса Menu.MenuItemCollection, содержащую другие объекты Menultem.

Что касается кода, соответствующего рис. 8.11, то он начинается с объявления команд меню. Имена, принятые по умолчанию, были заменены более содержательными: вместо Menulteml используется имя mnuFile и т. д.

Рис. 8.10. Начало построения меню в редакторе меню

Рис. 8.11. Построение меню в новом редакторе меню Visual Studio



Friend WithEvents MainMenul As System.Windows.Forms.MainMenu


Friend WithEvents mnuFile As System.Windows.Forms.Menultem

Friend WithEvents mnuEdit As System.Windows.Forms.MenuItem

Friend WithEvents mnuHelp As System.Windows.Forms.Menultem

Friend WithEvents mnuOpen As System.Windows.Forms.Menultem

Friend WithEvents mnuSave As System.Windows.Forms.Menultem

Friend WithEvents mnuExit As System.Windows.Forms.Menultem

Чтобы быстро изменить свойство Name команд меню, щелкните на команде правой кнопкой мыши и выберите в контекстном меню команду Edit Names (завершив редактирование, выйдите из этого режима при помощи контекстного меню).

Экземпляр главного меню создается командой, которую IDE включает в метод

InitializeComponent:

Me. MainMenul =New System. Windows. Forms. MainMenu ()

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

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

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

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

Как видно из этого фрагмента, меню File верхнего уровня тоже представлено экземпляром класса Menultem. Объекты команд включаются в экземпляр Mai nMenu вызовом метода 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




Содержание раздела