MenuStrip控件的LayoutStyle可以设置为StackWithOverflow吗?

时间:2011-01-18 16:39:42

标签: .net winforms menustrip

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

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

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

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

2 个答案:

答案 0 :(得分:8)

我遇到了同样的问题,并找到了让它运转的方法。

在MenuStrip上,您需要设置:

myMenuStrip.CanOverflow = True

默认值为false。

然后,您需要设置每个MenuItem:

myToolStripMenuItem.Overflow = ToolStripItemOverflow.AsNeeded

myToolStripMenuItem.Overflow = ToolStripItemOverflow.Always

默认为ToolStripItemOverflow.Never

参考文献:

MenuStrip.CanOverflow

ToolStripMenuItem.Overflow

答案 1 :(得分:6)

ToolStrip类有很多像这样的头发。我认为这里适当的选择是LayoutStyle = Flow来获取菜单项。这是内置Windows菜单的工作方式。

然而,您必须处理由此引起的布局问题。使用Dock = Fill将面板放在窗体上,以便当菜单条需要更多空间时,所有控件都会自动向下移动。