Слияние элементов меню в элементе управления MenuStrip в Windows Forms
Если у вас есть приложение MDI, можно объединить пункты меню или целые меню из дочерней формы в меню родительской формы.
В этом разделе описываются основные понятия, связанные с объединением элементов меню в приложении MDI.
общие понятия
Процедуры слияния включают как целевой объект, так и управление версиями:
Целевой объект — это элемент управления MenuStrip в основной или родительской форме MDI, в которой объединяются элементы меню.
Источником является элемент управления MenuStrip в дочерней форме MDI, содержащей пункты меню, которые необходимо объединить в целевое меню.
Свойство MdiWindowListItem определяет пункт меню, раскрывающийся список которого будет заполнен заголовками дочерних элементов MDI текущей родительской формы MDI. Например, обычно перечисляются дочерние элементы MDI, открытые в меню Окно.
Свойство IsMdiWindowListEntry определяет, какие пункты меню поступают из MenuStrip в дочерней форме MDI.
Пункты меню можно объединить вручную или автоматически. Пункты меню объединяются одинаково для обоих методов, но слияние активируется по-разному, как описано в разделах "Слияние вручную" и "Автоматическое слияние" далее в этом разделе. При ручном и автоматическом слиянии каждое действие влияет на следующее действие.
Слияние MenuStrip перемещает пункты меню от одного ToolStrip к другому, а не клонирует их, как MainMenu.
Значения MergeAction
Действие слияния для пунктов меню в источнике MenuStrip задается с помощью свойства MergeAction.
В следующей таблице описано значение и типичное использование доступных действий слияния.
Значение MergeAction | Description | Типичное применение |
---|---|---|
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.
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по