2011-07-27 109 views
0

當用戶登錄到我的應用程序時,有一些菜單項我不希望每個用戶都看到。所以我想要禁用或使菜單項不可見。例如fileToolStripMenuItem是第一項在我menuStrip,當我嘗試:禁用ToolStripMenuItem與禁用MenuStrip.Item

fileToolStripMenuItem.Enabled = false; - 這不起作用 menuStrip.Items[0].Enabled = false; - 這確實工作

誰能指教我在這裏有什麼區別?

此外,我希望能夠從某個菜單項中禁用下拉菜單項,但是我也無法做到這一點。

下面的代碼:

public Form1() 
     { 
      InitializeComponent(); 

      // bunch of other code here 

      if (!login.ValidatedUser) 
      { 
       menuStrip1.Items[0].Visible = false; // this works 
       toolsToolStripMenuItem.Visible = false; // this does not 
       btnStartResourceManager.Enabled = false; 
       listAvailableSizes.Enabled = true; 
       panelPicSet.Enabled = true; 
      } 
     } 

回答

4

fileToolStripMenuItem.Enabled = false;按預期工作。我想你試圖在InitializeComponent()之前禁用它。呼叫。

public form() 
{ 
    InitializeComponent(); 
    fileToolStripMenuItem.Enabled = false;//disables all file menu 
    saveasToolStripMenuItem.Enabled = false; //disables save as menu item in file menu list 
} 
+0

不幸的是,我不是,我添加了一些代碼,請參閱。 – Nick

+0

好的,我明白了,但你的代碼仍然有問題。你可以添加代碼從設計器生成的代碼如何menutrip和它的項目被初始化?你使用哪個版本的框架? – Reniuz

+0

.NET框架是4.0.30319版將發佈設計器代碼 – Nick

0

用你的菜單項的具體名稱和更改其Visible屬性。即

private void toggleToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     if (shown) 
      saveToolStripMenuItem.Visible = false; 
     else 
      saveToolStripMenuItem.Visible = true; 
     shown = !shown; 
    } 
+0

感謝您的回覆,但正如我在我的帖子中所說,這是行不通的。它只適用於如果我說'menuStrip.Items [0] .Visible = false;'我需要知道爲什麼以及如何解決這個問題。 – Nick

0

對於子項目,只需右鍵單擊該項目並查看其名稱在屬性窗口中的設計部分。在我的情況下,addNewToolStripMenuItem1

public Form() 
    { 
     InitializeComponent(); 
     menuStrip1.Items[1].Visible = false; // For Main Item // Bold Letters 
     addNewToolStripMenuItem1.Visible = false; //For Sub Items   
    }