【问题标题】:Can a MenuStrip control have its LayoutStyle set to StackWithOverflow?MenuStrip 控件能否将其 LayoutStyle 设置为 StackWithOverflow?
【发布时间】:2011-01-18 16:39:41
【问题描述】:

我用 MenuStrip 创建了一个简单的表单。 MenuStrip 的LayoutStyle 设置为HorizontalStackWithOverflow(默认值)。

根据MSDN reference on MenuStrip,其LayoutStyle属性继承自ToolStrip。 LayoutStyle 的可能值之一是HorizontalStackWithOverflow,这也是默认设置。此设置应提供将其 Overflow 属性设置为 AsNeeded 的项目移动到溢出按钮。

当我运行应用程序并调整表单大小以使菜单无法完全适应时,这种情况不会发生。我已将 ToolStripMenuItems 溢出属性设置为 AsNeeded,但是当我调整表单大小时,右侧的菜单项就会消失。

文档是否有误,您只能在 ToolStrip 上而不是在 MenuStrip 上获得溢出按钮吗?或者我还需要做些什么才能让事情正常进行吗?还是我只是误读了文档?

【问题讨论】:

    标签: .net winforms menustrip


    【解决方案1】:

    我刚刚遇到了同样的问题,并找到了解决方法。

    在MenuStrip上你需要设置:

    myMenuStrip.CanOverflow = True
    

    默认为假。

    然后对于你需要设置的每个 MenuItem:

    myToolStripMenuItem.Overflow = ToolStripItemOverflow.AsNeeded
    

    myToolStripMenuItem.Overflow = ToolStripItemOverflow.Always
    

    默认是 ToolStripItemOverflow.Never

    参考资料:

    MenuStrip.CanOverflow

    ToolStripMenuItem.Overflow

    【讨论】:

    • 它有效:myMenuStrip.CanOverflow = True 确实是关键。 @comecme:考虑标记为已接受的答案。
    【解决方案2】:

    ToolStrip 类有很多这样的问题。我认为这里的相应选择是layoutstyle = flow以获取包裹的菜单项。这是内置 Windows 菜单的工作方式。

    但是,您必须注意由此引起的布局问题。使用 Dock = Fill 在表单上放置一个面板,这样当菜单条需要更多空间时,所有控件都会自动向下移动。

    【讨论】:

    • 使用 LayoutStyle=Flow 至少菜单项不再消失。但是您是说不能在 MenuStrip 上使用 OverflowButton 吗?那么文档是错误的还是错误?
    • 不确定它是否重要,它只是不起作用。我有 95% 的把握你不能让它工作。您可以在 connect.microsoft.com 提交反馈报告。然而,在过去的几年里,他们一直在以“不会修复”的形式关闭 Winforms 错误报告。您有一个很好的解决方法,我建议您使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多