2013-07-11 114 views
0

我需要動態禁用菜單項的子子項。這裏在菜單欄中如果我運行啓動時,禁用啓動選項應該禁用如何實現這一點。我已附上快照參考如何禁用菜單條子菜單

// Run At Startup 
private void runAtStartupToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    rkApp.SetValue("TimeCalculation", "\"" + Application.ExecutablePath.ToString() + "\""); 
    Environment.GetFolderPath(Environment.SpecialFolder.Startup); 
    menuStrip1.Items["disableStartupToolStripMenuItem"].Enabled = false; 

} 

//Disable Startup 
private void disableStartupToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    rkApp.DeleteValue("TimeCalculation", false); 
    menuStrip1.Items["runAtStartupToolStripMenuItem"].Enabled = false; 
} 

快照:

enter image description here

+0

什麼'Environment.GetFolderPath'呢?你不使用它的返回值。 – joe

回答

0

使用標誌:

private bool flag = true; 

private void runAtStartupToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    //... 
    flag = true; 
} 

private void disableStartupToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    //... 
    flag = false; 
} 

然後使用DropDownOpening事件啓用/禁用的項目。

private void bToolStripMenuItem_DropDownOpening(object sender, EventArgs e) { 
    runAtStartupToolStripMenuItem.Enabled = !flag; 
    disableStartupToolStripMenuItem.Enabled = flag; 
} 

如果你想隱藏的項目使用Available

runAtStartupToolStripMenuItem.Available= !flag; 
    disableStartupToolStripMenuItem.Available= flag; 
+0

保持另一面旗幟的意義何在?您已經擁有一個「啓動時運行」菜單項的「已檢查」狀態。只用那個! –

+0

另外,你確定有'Available'屬性嗎?我相信你可能會想到「可見」。 –

+0

@CodyGray:1)沒錯。但我通常使用單獨的標誌,所以功能不會綁定到UI。這使得我可以在其他地方移動功能,而我的UI仍在工作。 2)有一個'可用'我自己使用它。 – joe