Winforms ToolStripSplitButton отображается с серой линией под ним и поднимается только при наведении на него курсора мыши.

Я пытаюсь понять ToolStripSplitButton. Цель состоит в том, чтобы отобразить датчик пользовательского контроля при нажатии ToolStripSplitButton. Однако, какие бы настройки я ни пробовал, под кнопкой видна серая полоса.

Сам ToolStrip имеет значение RenderMode.System, не закреплен, а ToolStripSplitButton является единственным компонентом в нем.

Я могу удалить линию, введя собственный класс ToolStripRenderer, но это кажется излишним для удаления этой единственной надоедливой темно-серой линии под контролем.

Я понимаю, что это может быть полный выстрел в темноте, поскольку я не предоставляю остальные настройки для этих компонентов, но я надеялся, что кто-то может дать представление о том, почему этот элемент управления ведет себя так, как он.


Мой второй вопрос касается поведения ToolStripSplitButton. Есть ли способ избежать плоского и безрамочного вида, который отображается на компоненте до того, как на него наведется указатель мыши? Я пытаюсь придать ему единый вид вместе с остальными кнопками на панели, а ToolStripSplitButton появляется поднятым только тогда, когда курсор мыши находится над компонентом.

Вот скриншот:

ToolStripSplitButton поврежден

Любая помощь очень приветствуется!


person Pedery    schedule 13.07.2009    source источник


Ответы (1)


Для всех, кто заинтересован, я все-таки создал собственный класс ToolStripRenderer. Здесь мне пришлось переопределить несколько методов, чтобы получить желаемый результат, и результат вышел довольно хорошим. Чтобы нарисовать контур кнопки, я просто использовал ControlPaint, а для выпадающего вида вкладки я нарисовал несколько линий системным цветом ControlDarkDark. Чтобы не вдаваться в кровавые подробности, уже есть несколько руководств, описывающих это. Теперь кажется странным, что для того, чтобы получить от ToolStripDropDownButton поведение, похожее на кнопку, нужно самому рисовать, но я не исключаю, что где-то один параметр может конфликтовать с другим.

Код могу выложить, если кому интересно.

person Pedery    schedule 14.07.2009