Присоединиться к контекстным меню - PullRequest
5 голосов
/ 24 февраля 2012

Если у меня есть контекстное меню, возможно ли присоединить его к другому меню?Итак, вы получите:

  Menu 1 Item 1
  Menu 1 Item 2
  Menu 1 Item N
    ---------
  Menu 2 Item 1
  Menu 2 Item 2
  Menu 2 Item N

Давайте рассмотрим пример программы, похожей на блокнот.В меню повторяется то, что есть стандартный набор инструментов, которые появляются как в меню редактирования, так и в контекстном меню элементов управления редактирования (Вырезать, Копировать, Вставить, Выделить все ...).

IХотелось бы иметь меню с именем ClipboardTools, которое будет отображаться как в контекстном меню «Правка», так и в элементе управления без необходимости создавать элементы более одного раза.Конечно, в этом случае повторение не так уж и плохо, но мне приходится иметь дело с большими меню, которые появляются в 3-4 различных меню, и в идеале не как подменю.

1 Ответ

5 голосов
/ 24 февраля 2012

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

  var joinedMenuItem = new System.Windows.Forms.ToolStripMenuItem();
  menu1.Items.Add(joinedMenuItem );
  menu2.Items.Add(joinedMenuItem );

Точно так же вы можете добавлять элементы из одного меню в другое меню;

  menu1.Items.AddRange(menu2.Items);

Пора сказать, что:
ToolStripMenu это подпункты Items свойство.
ToolStripMenuItem Подэлементы находятся в DropDownItems свойстве.

Итак, если у вас есть два главных пункта меню (например, «Файл» и «Редактировать»), и вы хотите удалить общие подпункты:

  foreach (var item in topMenuItem2.DropDownItems)
  {
      topMenuItem1.DropDownItems.Remove(item);
  }

В реальной жизни, если кому-то нужна такая гибкая система меню, наиболее вероятным будет создание общего списка пунктов меню. А может быть подмножества пунктов меню по категориям. Затем можно добавить пункты меню из такого списка или наборов в отображаемое меню.

Например, вы можете предоставить пользователям возможность настраивать меню или создавать собственные разделы меню. Как это делается в Visual Studio.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...