访问WinForms中的ToolStripMenuItem子项

时间:2012-02-03 06:29:51

标签: c# winforms

全部,

我在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,师傅......)

见下图,..

enter image description here

请提出你的建议。

2 个答案:

答案 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);
                }

            }
        }