title: Disabling top-level menu item does not disable children, in spite of what MSDN says?
body: <p>According to <a href="http://msdn.microsoft.com/en-us/library/aa984351%28VS.71%29.aspx" rel="nofollow noreferrer">http://msdn.microsoft.com/en-us/library/aa984351%28VS.71%29.aspx</a> </p>
  
  <blockquote>
    <p>Disabling the first or toplevel menu item in a menu (for example, the "File" menu item in a traditional File menu) disables all the menu items contained within the menu. Likewise, disabling a menu item that has submenu items disables the submenu items.</p>
  </blockquote>
  
  <p>According to <a href="http://msdn.microsoft.com/en-us/library/ms171655.aspx" rel="nofollow noreferrer">http://msdn.microsoft.com/en-us/library/ms171655.aspx</a> </p>
  
  <blockquote>
    <p>Disabling the first or top-level menu item in a menu disables all the menu items contained within the menu. Likewise, disabling a menu item that has submenu items disables the submenu items.</p>
  </blockquote>
  
  <p>However, if I create a new Windows Forms project and add the following code, I can still use the shortcut key to access the <code>Child</code> menu item that, according to MSDN, <em>should</em> be disabled.</p>
  
  <pre><code>public Form1()
  {
      InitializeComponent();
  
      // Main menu
      MenuStrip mainMenu = new MenuStrip();
      this.Controls.Add(mainMenu);
  
      // Top Level menu
      ToolStripMenuItem topLevelMenuItem = new ToolStripMenuItem("&amp;Top Level");
      mainMenu.Items.Add(topLevelMenuItem);
  
      // Child menu item
      ToolStripMenuItem childMenuItem = new ToolStripMenuItem("&amp;Child...", null, (o, e) =&gt; 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) =&gt;
      {
          topLevelMenuItem.Enabled = !topLevelMenuItem.Enabled;
          MessageBox.Show("topLevelMenuItem.Enabled = " + topLevelMenuItem.Enabled + Environment.NewLine + "childMenuItem.Enabled = " + childMenuItem.Enabled);
      }));
  }
  </code></pre>
  
  <p>I can see that <code>childMenuItem.Enabled</code> is not changing at all, while <code>topLevelMenuItem.Enabled</code> does.</p>
  
  <p>Sure, I could use a for loop to disable all menu items under the <code>Top Level</code> menu, or even disable just the <code>Child</code> menu item, but according to MSDN I shouldn't have to.  What's the deal?  Am I missing something, misinterpreting something, or is MSDN just wrong?</p>