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