Я хотел бы иметь возможность изменить цвет границы элементов управления ToolStripComboBox в некоторых моих панелях инструментов, поскольку цвет границы ComboBox по умолчанию при использовании с плоским стилем — SystemColors.Window, который в основном невидим по сравнению с цветом элемента управления по умолчанию панели инструментов. После долгих поисков в Reflector я не вижу очевидного способа сделать это, поскольку вся инфраструктура рендеринга ComboBox надежно защищена внутренними и частными интерфейсами.
За пределами ToolStrips обычное решение, которое я видел, для исправления цвета границы в ComboBox, которое я видел, заключается в подклассе ComboBox, переопределении WndProc и ручном окрашивании границы. Это не может работать для элементов управления ToolStripComboBox, поскольку внутренний элемент управления ComboBox является собственным частным подклассом ComboBox, и я не вижу способа заменить экземпляр элемента управления.
Альтернативное решение, которое я рассматриваю, — поместить один из расширенных объектов ComboBox в ToolStripControlHost, что позволит мне нарисовать границу, но тогда мне придется отказаться от некоторых профессиональных настроек рендерера. Вторичный недостаток, который я заметил, заключается в том, что я иногда мерцаю при наведении курсора.
Переключение моего дизайна на WPF не является приемлемым решением. Оборачивать элементы управления в родительские элементы управления для рисования границ также неприемлемо, так как это ничего не дает по сравнению с альтернативой ToolStripControlHost.
Есть ли у кого-нибудь умное решение для решения этой проблемы, или существует ли уже существующая (с разрешающей лицензией) повторная реализация стека рендеринга в плоском стиле ComboBox, которая устраняет некоторые недостатки в существующей реализации?