我希望能夠在我的一些工具條中更改ToolStripComboBox控件的邊框顏色,因爲與平面樣式一起使用時,ComboBoxes的默認邊框顏色是SystemColors.Window,它基本上對工具條的默認控制顏色不可見。在Reflector中進行了大量的挖掘之後,我沒有看到任何明顯的方法來實現這一點,因爲ComboBox渲染背後的所有基礎架構都受到內部和專用接口的高度保護。用平面樣式更改ToolStripComboBox的邊框
在ToolStrips之外,我見過的一個常見的解決方案是爲ComboBox上的邊框顏色定義的子類,覆蓋WndProc,並手動繪製邊框。這不適用於ToolStripComboBox控件,因爲內部ComboBox控件是它自己的ComboBox的私有子類,我無法看到用於替換該控件的實例。
我正在考慮的另一種解決方案是將其中一個擴展的ComboBox對象放入ToolStripControlHost中,該ToolStripControlHost允許我繪製邊框,但之後必須放棄一些專業的渲染器調整。我注意到的第二個缺點是在鼠標懸停期間偶爾會出現閃爍現象。
將我的設計切換到WPF不是一個可接受的解決方案。在父級控件中繪製邊框的控件也是不可接受的,因爲這不會取代ToolStripControlHost替代方案。
有沒有人有一個聰明的解決方案來解決這個問題,或者是否有一個現有的(許可授權的)重新實現ComboBox平面樣式渲染堆棧在野外,它修復了現有的一些缺陷實施?