У меня есть ContextMenuStrip
элемент управления с несколькими пунктами меню A, B, C, D, E и разделителями до и после пункта C.
Во время выполнения я динамически решаю в событии Opening
, показывать ли пункт меню C на основе некоторых условий.
private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
{
toolStripMenuItemC.Visible = SomeCondition;
}
Когда меню отображается во время выполнения, а элемент C скрыт,тем не менее, оба разделителя видны, что выглядит некрасиво.
Существует ли какой-либо встроенный механизм для автоматического объединения нескольких последовательных разделителей меню в один?Например, среда VCL в Delphi имеет для этого свойство TPopupMenu.AutoLineReduction
.
Конечно, можно написать специальную логику для меню, чтобы посмотреть, какие пункты меню видимы, а затем решить, какие разделители показывать.Но чем больше элементов и чем больше разделителей, тем сложнее этот код.И код должен был бы обновляться каждый раз, когда пункт меню добавляется, удаляется или перемещается в меню.
Я ищу общий способ использования любого меню, которое работает без знания конкретных пунктов меню.Я бы предпочел какой-то способ, который уже включен в WinForms из коробки, но вы также можете ответить с помощью собственной функции инструмента, чтобы очистить разделители в меню.