全部,
我在Winform中没有动态创建菜单条。而且一切都是隐形的,当用户拥有权利时,只有它是可见的。我的用户名之一拥有完整的权利。为此,我写了下面的代码,..
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;
}
}
}
但这是menuItem和子menuItem可见的。我的几个childItem菜单有更多的childItem。这意味着,在TsmMaster和tsmregisterMaster是可见的但我无法访问registerMasters Childs(ClassMaster,师傅......)
见下图,..
请提出你的建议。
答案 0 :(得分:3)
尝试使用递归:
private void ActivateMenus(ToolStripItemCollection items)
{
foreach (ToolStripMenuItem item in items)
{
item.Visible = true;
ActivateMenus(item.DropDown.Items);
}
}
答案 1 :(得分:2)
修正了您的代码
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);
}
}
}