Деактивирование, скрытие и удаление элементов меню

 

Иногда имеет смысл убрать из меню определенные опции, Возможно, вы захотите деактивировать элемент меню, потому что вас не устраивают условия для его выпол­нения, или скрыть элемент меню, который не должен отображаться. А в некоторых случаях может потребоваться удалить элемент из меню вообще.

Чтобы деактивировать элемент меню, присвойте значение False свойству Enabled. Элемент меню станет серым. Пользователь его будет видеть, но не сможет вызвать ни щелчком мыши, ни комбинацией клавиш.

Вы можете скрыть элемент меню, присвоив свойству Visible значение False. Однако помните, что это не деактивирует элемент меню, и если его свойству Enabled задать значение True, такой элемент все еще можно вызвать с помощью быстрых клавиш, если они для него были определены. Скрывайте элементы меню с умом: если пользователю понадобится какой-то элемент, то будет лучше, если он увидит его серым, поскольку свойству Enabled задано значение False. Иначе пользователь будет вынужден продол­жить поиски скрытого элемента в других меню.

Если вам нужно полностью удалить элемент из меню, используйте методы Menu- Strip.Items.Remove и MenuStripJtems.RemoveAt (для удаления элемента из меню верхне­го уровня) или методы ToolStripMenuItem.DropDownItems.Remove и ToolStripMenuItem. DropDownItems.RemoveAt (при необходимости удалить элемент из вложенного меню), как показано в следующих примерах:

 

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

Меню следует объединять во время выполнения, «слив» их элементы в одно меню. Объединять можно элементы управления 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.