Добавление и удаление ToolStripMenuItem из MenuStrip и DropDownItems в WinForms - PullRequest
3 голосов
/ 28 октября 2010

У меня есть MenuStrip с некоторыми статическими предметами. К этому MenuStrip я добавляю предметы программно. Некоторые из этих предметов имеют дочерние предметы (DropDownItems).

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

Пример ситуации:

mainMenu
 -staticItem1
 -added1
  -added1_sub1
  -added1_sub2
 -added2
  -added2_sub1

Я мог бы сделать:

added1.Dispose();
mainMenu.Items.Remove(added2);

И то и другое работает, но я не уверен, безопасно ли это. Может быть, я должен рекурсивно удалять и удалять все элементы и подпункты?

1 Ответ

3 голосов
/ 28 октября 2010
  • Используйте только метод Remove, этого достаточно
  • Вам не нужен рекурсив. Когда вы удаляете родителя, все его дочерние элементы будут удалены
  • Используйте Items.Clear() дляудалите все дочерние элементы для меню и DropDownItems.Clear(), чтобы удалить все дочерние элементы для элемента.
...