DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Windows Vistaで今までの見た目でコンボボックス(DropDownList)を使用する方法

環境/言語:[Windows Vista/.NET Framework2.0/WinForm/C#]
分類:[.NET]

Windows Vistaで今までの見た目でコンボボックス(DropDownList)を使用する方法

こんにちは。アべです。

Windows XP用に全てのフラットのコントロールで統一して
画面を作成したアプリケーションがあります。
これをVista上で動かすとコンボボックス(DropDownList)が
フラットはなく全体が3D化されたイメージなります。

この3D化されたイメージをやめて、WindowsXP上で動作させたときと
同じようなフラットなイメージすることはできるのでしょうか?

どなたかやり方がわかる方がおりましたら、アドバイスを
お願い致します。


▼イメージ

 今のイメージ(Windwos Vista)
   _______________
  (_______________) ←全体が3D表示

 Windows XPのイメージ
   _______________
  |____________|▼| ←このイメージにしたい。
         ~~

▼こちらで調べて事。

下記の3案があり今のところどれも上手く言っていません。

1.manifestファイルの対応
⇒エラーが発生し、WindowsXPのコントロールを使ってくれない。
name=Microsoft.Windows.Common-Controls
varsion=6.0.0.0

2.OnPaintメソッドをオーバーライド

⇒描画が無視される。

3.WindowsMessage版

protected override void WndProc(ref Message m)
にて、WM_NC_PAINTやWM_PAINTを使用する。
⇒XPでは動作するコードでもVistaでは、致命的エラーになる。
しかも、「○○は動作を停止しました。問題が発生したため、、」
となり、Application.ThreadExceptionイベントも無視されるようです。

以上
コンボボックスが選択のみ可のDropDownListでは灰色・凸状・灰色 ▼| になりますね。
選択/入力兼用のDropDownでは白・フラット・白い ▼| になります。

コンボボックスのプロパティでFlatStyleをStandardからFlatに変えれば、、
実行時のDropDownListは白・フラット・灰色 |▼| になります(デザイン時は灰色)。
同様にDropDownもFlatに変えれば、白い ▼| から灰色の |▼| になります。

ただ、XPと完全に同一(水色の枠線など)の形状は再現できないようです。
(互換モードで視覚テーマを無効にするとWin2000以前の凹んだ形状になりますし・・・)
Rodger さん、回答有難うございます。

>コンボボックスが選択のみ可のDropDownListでは灰色・凸状・灰色 ▼| になりますね。
>選択/入力兼用のDropDownでは白・フラット・白い ▼| になります。

⇒確認しました。
Vistaからは、意図的にDropDownListとDropDownの見た目を分けてきた
ということで、見た目の変更には入力を許すか許さないかがわかるので、
意義があるように思えます。

そこをアピールして納得してもらいます。
有難うございました。

DOBON.NET | プログラミング道 | プログラミング掲示板