C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 175 を表示中)
■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 で描画します。

という感じになります。

フォーカスを得た状態、マウスがホバーした状態などのステータスにあわせてこれらを描画しなくてはならないので、
はっきりいってメチャメチャ面倒です。

返信 編集キー/


管理者用

- Child Tree -