■100551 / ) |
Re[1]: コンボボックスの文字色を変更する方法 |
□投稿者/ KOZ (316回)-(2022/09/10(Sat) 22:56:02)
|
■No100547 (wani さん) に返信 > http://dobon.net/vb/dotnet/control/cbownerdraw.html > このページの方法で変更することができました。 > しかし、外観(FlatStyle)がStandardではなくFlatに変わってしまいます。
Flat ではなく、DropDownList が DropDown と同じような表示になるのではないですか?
> Standardの状態で文字色だけを変更するにはどのようにしたら良いですか?
ComboBox 自身を VisualStyleElement を使って VisualStyleRenderer で背景を描画します。
ComboBox の DropDownButton 部分については、VisualStyleElement に定義があるのですが、他は無いので https://docs.microsoft.com/en-us/windows/win32/controls/parts-and-states を参照して、定義します。
描画時には
VisualStyleRenderer.IsBackgroundPartiallyTransparent メソッドで現在の visual スタイル要素の 背景の一部が半透明である (アルファ ブレンドされている) かどうかをチェックし、True なら VisualStyleRenderer.DrawParentBackground で親の背景を描画します。
VisualStyleRenderer.SetParameters で VisualStyleElement を反映します。
VisualStyleRenderer.DrawBackground で描画します。
という感じになります。
フォーカスを得た状態、マウスがホバーした状態などのステータスにあわせてこれらを描画しなくてはならないので、 はっきりいってメチャメチャ面倒です。
|
|