【问题标题】:Disabling top-level menu item does not disable children, in spite of what MSDN says?尽管 MSDN 说了什么,禁用顶级菜单项并不会禁用子项?
【发布时间】:2011-01-11 20:13:38
【问题描述】:

根据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 错了?

【问题讨论】:

    标签: c# .net winforms menu menuitem


    【解决方案1】:

    这是一个错误。 ToolStripItem 类中有很多错误,在适当的时候(在 .NET 2.0 发布后的某个时间)没有修复它们,现在为时已晚。将这些错误发布到 Connect 反馈站点没有用,它们只会告诉您访问 MSDN 论坛以找到解决方法。我想你已经得到了一个。 Fwiw,here's one 符合您的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      相关资源
      最近更新 更多