Вы можете установить максимальную высоту DropDown элемента MenuItem, используя свойство ToolStripMenuItem.DropDown
MaximumSize
.
Вы можете определить высоту DropDown на основе максимального количества элементов, которые вы хотите показать. Или любая другая мера, которая имеет смысл в вашем сценарии (может быть, мера, которая соответствует текущей ClientSize.Height
формы).
Чтобы указать высоту относительно максимального количества субэлементов (здесь maxSubMenuItems
), суммируйте высоту первых субэлементов maxSubMenuItems
и используйте эту меру для установки свойства MaximumSize
.
Появятся стандартные (верхняя и нижняя) кнопки прокрутки.
Здесь я использую значение maxHeight + (maxHeight / maxSubMenuItems)
, чтобы добавить немного места вверху и внизу раскрывающегося списка, в противном случае меню может не поместиться, и оно также выглядит лучше :)
Вставьте этот код в конструктор формы (после 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 с помощью подменю.