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

com*_*cme 5 .net menustrip winforms

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

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

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

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

小智 8

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

在MenuStrip上你需要设置:

myMenuStrip.CanOverflow = True
Run Code Online (Sandbox Code Playgroud)

默认值为false.

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

myToolStripMenuItem.Overflow = ToolStripItemOverflow.AsNeeded
Run Code Online (Sandbox Code Playgroud)

要么

myToolStripMenuItem.Overflow = ToolStripItemOverflow.Always
Run Code Online (Sandbox Code Playgroud)

默认值为ToolStripItemOverflow.Never

参考文献:

MenuStrip.CanOverflow

ToolStripMenuItem.Overflow


Han*_*ant 6

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

但是,您必须处理由此引起的布局问题.将一个Panel放在具有Dock = Fill的表单上,以便当菜单条需要更多空间时,所有控件都会自动向下移动.