Может ли элемент управления MenuStrip иметь свой LayoutStyle, установленный в StackWithOverflow? - PullRequest
5 голосов
/ 18 января 2011

Я создаю простую форму с помощью MenuStrip. LayoutStyle MenuStrip установлен на HorizontalStackWithOverflow (по умолчанию).

В соответствии со ссылкой MSDN на MenuStrip его свойство LayoutStyle наследуется от ToolStrip. Одним из возможных значений для LayoutStyle является HorizontalStackWithOverflow, что также является настройкой по умолчанию. Этот параметр должен предоставлять элементы с его свойством Overflow, установленным в AsNeeded, перемещаются на кнопку переполнения.

Когда я запускаю приложение и изменяю размер формы, чтобы меню не помещалось полностью, этого не происходит. Я установил для свойства ToolStripMenuItems Overflow значение AsNeeded, но при изменении размера формы элементы меню справа просто исчезают.

Является ли документация неправильной, и вы можете получить только кнопку переполнения на ToolStrip, а не на MenuStrip? Или я должен что-то еще сделать, чтобы все заработало? Или я просто неправильно читаю документацию?

Ответы [ 2 ]

8 голосов
/ 14 октября 2011

У меня была такая же проблема, и я нашел способ заставить ее работать.

В MenuStrip вам необходимо установить:

myMenuStrip.CanOverflow = True

По умолчанию установлено значение false.

Затем для каждого элемента MenuItem необходимо установить:

myToolStripMenuItem.Overflow = ToolStripItemOverflow.AsNeeded

или

myToolStripMenuItem.Overflow = ToolStripItemOverflow.Always

По умолчанию ToolStripItemOverflow.Never

Ссылки:

MenuStrip.CanOverflow

ToolStripMenuItem.Overflow

6 голосов
/ 18 января 2011

У классов ToolStrip много таких волос. Я думаю, что соответствующий выбор здесь - LayoutStyle = Flow, чтобы обернуть пункты меню. Именно так работают встроенные меню Windows.

Однако вы должны позаботиться о проблеме компоновки, которую это вызывает. Поместите Panel в форму с помощью Dock = Fill, чтобы все элементы управления автоматически перемещались вниз, когда полосе меню требуется больше места.

...