Объединить элементы полосы меню для окон MDI - PullRequest
4 голосов
/ 18 августа 2010

Как объединить пункты меню родительской формы и дочерней формы с одинаковым именем меню?

1 Ответ

12 голосов
/ 18 августа 2010

Установите MergeAction для пунктов меню на «MatchOnly».

Добавлено

Поскольку это может стать немного сложным, я добавлю список шаговпростой пример.

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

Обратите внимание, что пунктами меню File являются A и B.

Нажмите File -> A, чтобы создать дочернее окно.

Обратите внимание, что меню Fileна контейнере теперь содержатся A, B и C.

Обратите также внимание, что меню File на дочернем элементе есть, но не имеет элементов.Это потому, что был объединен C.

Теперь вы можете установить для свойства MenuStrip.Visible дочернего элемента значение False, чтобы дочерний элемент не отображал меню.Удобно оставить это как True при разработке ваших меню, чтобы вы могли проверить, что все дочерние элементы меню были объединены правильно (они будут удалены из дочернего меню).

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

...