如何将滚动条添加到菜单项下拉列表中?
How to add a scrollbar to a Menu item dropdown?
菜单栏项目中的项目太多。
像这样:
看起来很长很糟糕。我想为菜单条项目添加滚动条。
我想在滚动条的帮助下查看其中的 3 个项目。
我该怎么做?
您可以使用 ToolStripMenuItem.DropDown
MaximumSize
属性 设置 MenuItem 下拉菜单的最大高度。
您可以根据要显示的最大项目数来确定 DropDown 的高度。或者在您的场景中有意义的任何其他度量(可能是适合表单当前 ClientSize.Height
的度量)。
要指定相对于最大子项数的高度(此处为 maxSubMenuItems
),请将前 maxSubMenuItems
个子项的高度相加并使用此度量来设置 MaximumSize
属性。
将出现标准(顶部和底部)滚动按钮。
在这里,我使用 maxHeight + (maxHeight / maxSubMenuItems)
值,在下拉列表的顶部和底部添加一些 space,否则菜单可能放不下,但看起来也更好: )
将此代码插入窗体的构造函数(在 InitializeComponent()
之后)或 Form.Load
中:
int maxSubMenuItems = 6;
if (toolStripMenuItem1.DropDownItems.Count > maxSubMenuItems) {
int maxHeight = toolStripMenuItem1.DropDownItems
.OfType<ToolStripMenuItem>()
.Take(maxSubMenuItems)
.Sum(itm => itm.Height);
toolStripMenuItem1.DropDown.MaximumSize =
new Size(toolStripMenuItem1.DropDown.Width, maxHeight + (maxHeight / maxSubMenuItems));
}
► 例如,当您必须显示代表字体的子项列表时,这会派上用场。因此,您可能希望在列表中显示使用字体名称绘制的字符串。或者类似的情况,当您必须显示一个可能很长的下拉菜单时。
在其他情况下,尝试使用子菜单限制每个 ToolStripMenuItem 的项目数。
菜单栏项目中的项目太多。
像这样:
看起来很长很糟糕。我想为菜单条项目添加滚动条。
我想在滚动条的帮助下查看其中的 3 个项目。
我该怎么做?
您可以使用 ToolStripMenuItem.DropDown
MaximumSize
属性 设置 MenuItem 下拉菜单的最大高度。
您可以根据要显示的最大项目数来确定 DropDown 的高度。或者在您的场景中有意义的任何其他度量(可能是适合表单当前 ClientSize.Height
的度量)。
要指定相对于最大子项数的高度(此处为 maxSubMenuItems
),请将前 maxSubMenuItems
个子项的高度相加并使用此度量来设置 MaximumSize
属性。
将出现标准(顶部和底部)滚动按钮。
在这里,我使用 maxHeight + (maxHeight / maxSubMenuItems)
值,在下拉列表的顶部和底部添加一些 space,否则菜单可能放不下,但看起来也更好: )
将此代码插入窗体的构造函数(在 InitializeComponent()
之后)或 Form.Load
中:
int maxSubMenuItems = 6;
if (toolStripMenuItem1.DropDownItems.Count > maxSubMenuItems) {
int maxHeight = toolStripMenuItem1.DropDownItems
.OfType<ToolStripMenuItem>()
.Take(maxSubMenuItems)
.Sum(itm => itm.Height);
toolStripMenuItem1.DropDown.MaximumSize =
new Size(toolStripMenuItem1.DropDown.Width, maxHeight + (maxHeight / maxSubMenuItems));
}
► 例如,当您必须显示代表字体的子项列表时,这会派上用场。因此,您可能希望在列表中显示使用字体名称绘制的字符串。或者类似的情况,当您必须显示一个可能很长的下拉菜单时。
在其他情况下,尝试使用子菜单限制每个 ToolStripMenuItem 的项目数。