2012-02-03 21 views
4

H all,訪問WinForms中的ToolStripMenuItem子項

我在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和子菜單項,。我的幾個childItem菜單有更多的childItem。這意味着,在TsmMaster和tsmregisterMaster是可見的,但我不能訪問registerMasters蔡爾茲(班主任,分工碩士....)

見下面的圖片,..

enter image description here

請給你的建議。

+0

定版請您用簡單的英語陳述的問題? – 2012-02-03 06:33:38

+0

使用遞歸邏輯將解決你的問題... – Smack 2012-02-03 07:15:33

+0

謝謝大家。遞歸解決了我的問題。 – Sagotharan 2012-02-03 10:57:39

回答

2

遞歸試試:

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

1+ @denis謝謝。它的工作。 – Sagotharan 2012-02-03 10:56:52

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

      } 
     } 
+0

+1 @thaven謝謝 – Sagotharan 2012-02-03 10:58:22

相關問題