Поделиться через


Объединение элементов меню в элементе управления MenuStrip в Windows Forms

Если у вас есть приложение многодокументного интерфейса (MDI), вы можете объединить элементы меню или целые меню из дочерней формы в меню родительской формы.

В этом разделе описываются основные понятия, связанные с объединением элементов меню в приложении MDI.

Общие понятия

Процедуры объединения включают в себя как целевое управление, так и исходное управление.

  • Цель — это элемент управления MenuStrip в главной или родительской форме MDI, в которой вы объединяете элементы меню.

  • Источником является элемент управления MenuStrip дочерней формы MDI, содержащей элементы меню, которые необходимо объединить в целевое меню.

Свойство MdiWindowListItem определяет элемент меню, раскрывающийся список которого вы заполняете заголовками текущих дочерних элементов MDI родительской формы MDI. Например, вы обычно перечисляете дочерние элементы MDI, которые в настоящее время открыты в меню окна .

Свойство IsMdiWindowListEntry определяет, какие элементы меню приходят из MenuStrip в дочерней форме MDI.

Элементы меню можно объединить вручную или автоматически. Элементы меню объединяются одинаково для обоих методов, но слияние активируется по-разному, как описано в разделах "Слияние вручную" и "Автоматическое слияние" далее в этом разделе. В ручном и автоматическом слиянии каждое действие слияния влияет на следующее действие слияния.

MenuStrip слияние перемещает элементы меню из одной ToolStrip в другую, а не клонирует их, в отличие от случая с MainMenu.

Значения MergeAction

Действие слияния для элементов меню в исходном MenuStrip задается с помощью свойства MergeAction.

В следующей таблице описано значение и типичное использование доступных действий слияния.

Значение MergeAction Описание Типичное использование
Append (по умолчанию) Добавляет исходный элемент в конец коллекции целевого элемента. Добавление элементов меню в конец меню при активации какой-то части программы.
Insert Добавляет исходный элемент в коллекцию целевого элемента в расположении, указанном свойством MergeIndex, заданным в исходном элементе. Добавление элементов меню в середину или в начало меню при активации какой-либо части программы.

Если значение MergeIndex одинаково для обоих элементов меню, они добавляются в обратном порядке. Задайте MergeIndex соответствующим образом, чтобы сохранить исходный порядок.
Replace Находит текстовое совпадение или использует значение MergeIndex, если не найдено совпадение текста, а затем заменяет соответствующий целевой элемент меню исходным элементом меню. Замена элемента целевого меню элементом исходного меню с тем же именем, но выполняющим другую функцию.
MatchOnly Находит текстовое совпадение или использует значение MergeIndex, если текстовое совпадение не найдено, а затем добавляет все раскрывающиеся списки из источника в целевую среду. Создание структуры меню, которая вставляет или добавляет элементы меню в подменю или удаляет элементы меню из подменю. Например, можно добавить пункт меню из дочернего элемента MDI в главное MenuStripменю "Сохранить как".

MatchOnly позволяет перемещаться по структуре меню без каких-либо действий. Он предоставляет способ оценки последующих элементов.
Remove Находит текстовое совпадение или использует значение MergeIndex, если совпадение не найдено, после чего удаляет элемент из цели. Удаление элемента меню из целевого MenuStrip.

Слияние вручную

В автоматическом слиянии участвуют только элементы управления MenuStrip. Чтобы объединить элементы других элементов управления, такие как ToolStrip и StatusStrip элементы управления, их необходимо объединить вручную, вызвав методы Merge и RevertMerge в коде по мере необходимости.

Автоматическое слияние

Автоматическое слияние для приложений MDI можно использовать, активировав исходную форму. Чтобы использовать MenuStrip в приложении MDI, задайте для свойства MainMenuStrip целевое MenuStrip, чтобы объединение действий, выполняемых в исходном MenuStrip, отражается в целевом MenuStrip.

Автоматическое слияние можно активировать, активировав MenuStrip в источнике MDI. После активации исходный MenuStrip объединяется с целевым объектом MDI. Когда новая форма становится активной, слияние отменяется на последней форме и активируется в новой форме. Это поведение можно контролировать, задав свойство MergeAction по мере необходимости для каждого ToolStripItem, а также задав свойство AllowMerge для каждого MenuStrip.

См. также