Доступ к дочернему элементу ToolStripMenuItem в WinForms - PullRequest
5 голосов
/ 03 февраля 2012

Н все,

Я создал полосу меню в 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;                        
          }
     }
}

Но это виден пункт меню и дочерний пункт меню. в моем меню childItem есть несколько childItem. Это означает, что в TsmMaster и tsmregisterMaster видны, но я не могу получить доступ к регистру Masters Childs (ClassMaster, подразделение Master ....)

См. Изображение ниже, ..

enter image description here

Пожалуйста, дайте ваше предложение.

Ответы [ 2 ]

3 голосов
/ 03 февраля 2012

Попробуйте с рекурсией:

private void ActivateMenus(ToolStripItemCollection items)
{
    foreach (ToolStripMenuItem item in items)
    {
        item.Visible = true;    
        ActivateMenus(item.DropDown.Items);
    }
}
2 голосов
/ 03 февраля 2012

Исправлена ​​версия Вашего кода

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

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