Согласно http://msdn.microsoft.com/en-us/library/aa984351%28VS.71%29.aspx
Отключение первого или верхнего уровня пункта меню в меню (например, пункт меню «Файл» в традиционном меню «Файл») отключает все пункты меню, содержащиеся в меню. Аналогично, отключение элемента меню, содержащего элементы подменю, отключает элементы подменю.
Согласно http://msdn.microsoft.com/en-us/library/ms171655.aspx
Отключение пункта меню первого или верхнего уровня в меню отключает все элементы меню, содержащиеся в меню. Аналогично, отключение элемента меню, содержащего элементы подменю, отключает элементы подменю.
Однако, если я создаю новый проект Windows Forms и добавляю следующий код, я все равно могу использовать клавишу быстрого доступа для доступа к пункту меню 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 просто не так?