據http://msdn.microsoft.com/en-us/library/aa984351%28VS.71%29.aspx禁用頂層菜單項不會禁用子項,儘管MSDN說什麼?
禁用菜單中的第一或頂層菜單項(例如,在傳統的文件菜單中的「文件」菜單項)禁止所有包含在菜單中的菜單項。同樣,禁用具有子菜單項的菜單項會禁用子菜單項。
根據http://msdn.microsoft.com/en-us/library/ms171655.aspx
禁用菜單中的第一或頂級菜單項禁用所有包含在菜單中的菜單項。同樣,禁用具有子菜單項的菜單項會禁用子菜單項。
但是,如果我創建一個新的Windows窗體項目並添加以下代碼,我仍然可以使用快捷鍵來訪問,根據MSDN,應該被禁用Child
菜單項。
public Form1()
{
InitializeComponent();
// Main menu
MenuStrip mainMenu = new MenuStrip();
this.Controls.Add(mainMenu);
// Top Level menu
ToolStripMenuItem topLevelMenuItem = new ToolStripMenuItem("&Top Level");
mainMenu.Items.Add(topLevelMenuItem);
// Child menu item
ToolStripMenuItem childMenuItem = new ToolStripMenuItem("&Child...", null, (o, e) => MessageBox.Show("Doing something."));
childMenuItem.ShortcutKeys = Keys.Control | Keys.C;
childMenuItem.ShortcutKeyDisplayString = "Ctrl + C";
topLevelMenuItem.DropDownItems.Add(childMenuItem);
// Menu item to toggle the Top Level menu's Enabled property
mainMenu.Items.Add(new ToolStripMenuItem("Toggle Enable for Top Level menu", null, (o, e) =>
{
topLevelMenuItem.Enabled = !topLevelMenuItem.Enabled;
MessageBox.Show("topLevelMenuItem.Enabled = " + topLevelMenuItem.Enabled + Environment.NewLine + "childMenuItem.Enabled = " + childMenuItem.Enabled);
}));
}
我可以看到childMenuItem.Enabled
沒有改變所有,而topLevelMenuItem.Enabled
一樣。
當然,我可以使用for循環來禁用Top Level
菜單下的所有菜單項,或者甚至禁用Child
菜單項,但根據MSDN我不應該這樣做。這是怎麼回事?我錯過了什麼,誤解了什麼,或者MSDN錯了嗎?