Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Занятие 9. Создание меню.doc
Скачиваний:
1
Добавлен:
19.11.2019
Размер:
5.42 Mб
Скачать

Объединение меню

Меню следует объединять во время выполнения, «слив» их элементы в одно меню. Объединять можно элементы управления MenuStrip и ContextMenuStrip. Вы даже можете объединить MenuStrip с ToolStrip. Подобно объединению панелей инструментов, объединение меню осуществляется путем вызова метода ToolStnpManager.Merge статического класса ToolStripManager, как показано ниже:

В этом примере первое меню (sourceToolStrip) объединяют со вторым (targetTool­Strip). При этом элементы меню sourceToolStrip объединяются с элементами target­ToolStrip, так как это определено значением их свойства MergeAction. Табл. 9-2 суммирует действия по объединению, которые происходят при соответствующем значении свойства MergeAction.

Табл. 9-2. Значения свойства MergeAction ToolStripItem и действия по объединению

Значение свойства

Действие

Append

Добавляет элемент в конец списка элементов

Insert

Вставляет элемент в позицию указанную свойством

Mergelndex

MatchOnly

Ищет совпадения, но не выполняет никаких действий

Remove

Если совпадающий элемент панели инструментов найден,

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

Replace

Если совпадающий элемент панели инструментов найден,

он заменяется данной панелью инструментов

При объединении панелей инструментов каждый элемент исходной панели инс­трументов сравнивается с каждым элементом выходной панели инструментов. Это сравнение основывается на свойстве Text каждого элемента меню. Таким образом, если любые два элемента меню имеют одинаковое свойство Text, они будут рассматриваться как совпадающие. Если совпадение найдено, а свойству MergeAction элемента из исходной панели инструментов задано значение MatchOnly, Remove или Replace, тогда будет выполнено соответствующее действие. Во всех остальных случаях элемент меню будет добавлен или вставлен в зависимости от значения свойства MergeAction.

Чтобы объединение панелей инструментов прошло успешно, их свойствам AllowMerge должно быть присвоено значение True.

Переключение между меню программным способом

По мере того как условия работы приложения изменяются, добавления или удаления элементов меню все меньше отвечают потребностям вашего приложения. Рано или поздно вы захотите заменить меню целиком. Вы можете полностью удалить элемент управления MenuStrip из формы, удалив его из коллекции Controls, и точно так же добавить новый элемент управления MenuStrip. Следующий пример демонстрирует, как во время выполнения удалять из формы MenuStrip 1 и заменять его MenuStrip2:

Имейте в виду, что добавляемое меню не должно быть элементом коллекции Con­trols.

Контекстные меню и элемент управления ContextMenuStrip

Контекстные меню знакомы всем пользователям приложений Windows Forms. Эти «быстрые» меню отображаются при щелчке правой кнопкой мышки объекта. Элемент управления ContextMenuStrip позволяет создавать контекстные меню и привязывать их к определенным объектам.

Рассматриваемый элемент управления похож на MenuStrip. Оба элемента управле­ния имеют интуитивный интерфейс разработки, который позволяет быстро создавать элементы меню. Кроме того, они содержат коллекцию элементов меню, которую можно получить с помощью свойства Items. Основным отличием между этими элементами управления является то, что ContextMenuStrip не имеет меню верхнего уровня и во вре­мя выполнения не отображается до тех пор, пока вы его не вызовите щелчком правой кнопкой мыши элемента управления, привязанного к данному контекстному меню.