Как я могу объединить пункты меню родительской формы и дочерней формы с одинаковым именем меню?
Объединить элементы полосы меню для окон MDI
Ответы (1)
Установите MergeAction пунктов меню на «MatchOnly».
Добавлено
Поскольку это может быть немного сложно, я добавлю список шагов, чтобы сделать простой пример.
- Создайте новое приложение Windows Forms.
- Добавьте новую форму Windows и оставьте ее имя Form2.
- Откройте конструктор Form1 (если он еще не открыт).
- Нажмите на форму и установите для параметра IsMdiContainer Form1 значение True.
- Откройте панель инструментов и добавьте MenuStrip в форму Form1.
- В поле «Введите здесь» введите &Файл
- В подпункте «Введите здесь» введите A
- В подпункте «Введите здесь» введите B
- В вашем контейнере MDI (Form1) должно быть меню «Файл» с элементами A и B.
- Дважды щелкните элемент A, чтобы добавить обработчик кликов.
- Добавьте
new Form2 { MdiParent = this }.Show();
в метод обработчика. - Откройте конструктор Form2.
- Откройте панель инструментов и добавьте MenuStrip в Form2.
- Примечание. См. ниже информацию о свойстве Visible в Form2 MenuStrip, для которого на данном этапе можно установить значение False.
- В поле «Введите здесь» введите &Файл
- В подпункте «Введите здесь» введите C
- Ваш дочерний MDI (Form2) должен иметь меню «Файл» с пунктом C.
- Нажмите на пункт меню «Файл» и в окне «Свойства» установите для MergeAction значение MatchOnly.
- Запустите программу.
Обратите внимание, что пункты меню «Файл» — это A и B.
Нажмите File -> A, чтобы создать дочернее окно.
Обратите внимание, что меню «Файл» в контейнере теперь содержит A, B и C.
Обратите также внимание на то, что меню «Файл» в дочернем элементе есть, но в нем нет пунктов. Это потому, что C был объединен.
Теперь вы можете установить для свойства MenuStrip.Visible дочернего элемента значение False, чтобы дочерний элемент не отображал меню. Это удобно оставить как True при разработке меню, чтобы вы могли убедиться, что все элементы дочернего меню были правильно объединены (они исчезнут из дочернего меню).
Вы можете использовать свойство MergeIndex, чтобы управлять тем, как дочерние элементы объединяются в контейнер.