Accessing a ToolStripMenuItem Child in WinForms

H all,

I created a menu bar in Winform not dynamically. And all this is invisible, when the user has the rights only this can be seen. My username has full rights. For this, I wrote the code below, ..

private void menuActive(MenuStrip menus) { foreach (ToolStripMenuItem menu in menus.Items) { menu.Visible = true; for (int i = 0; i < menu.DropDown.Items.Count; i++) { menu.DropDown.Items[i].Visible = true; } } } 

But it is visible menuItem and child menuItem. my little childItem menu has more childItem. This means that in TsmMaster and tsmregisterMaster are visible, but I can not access RegisterMasters Childs (ClassMaster, master master).

See image below ..

enter image description here

Please give your suggestion.

+4
source share
2 answers

Try with recursion:

 private void ActivateMenus(ToolStripItemCollection items) { foreach (ToolStripMenuItem item in items) { item.Visible = true; ActivateMenus(item.DropDown.Items); } } 
+2
source

Fixed version of your code

  private void menuActive(MenuStrip menus) { foreach (ToolStripMenuItem menu in menus.Items) { activateItems(menu); } } private void activateItems(ToolStripMenuItem item) { item.Visible = true; for (int i = 0; i < item.DropDown.Items.Count; i++) { ToolStripItem subItem = item.DropDown.Items[i]; subItem.Visible = true; if (item is ToolStripMenuItem) { activateItems(subItem as ToolStripMenuItem); } } } 
+2
source

Source: https://habr.com/ru/post/1394549/


All Articles