根据http://msdn.microsoft.com/en-us/library/aa984351%28VS.71%29.aspx
禁用菜单中的第一个或顶级菜单项(例如,传统文件菜单中的“文件”菜单项)会禁用菜单中包含的所有菜单项。同样,禁用具有子菜单项的菜单项会禁用子菜单项。
根据http://msdn.microsoft.com/en-us/library/ms171655.aspx
禁用菜单中的第一个或顶级菜单项会禁用菜单中包含的所有菜单项。同样,禁用具有子菜单项的菜单项会禁用子菜单项。
但是,如果我创建一个新的 Windows 窗体项目并添加以下代码,我仍然可以使用快捷键访问Child
根据 MSDN应该禁用的菜单项。
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 错了?