.NET ROOM.NET ROOMトップへCOMRADE総合トップへ
「6:コントロール実行時の動作を制御する」へ

V/HScrollBarをWindows XPスタイルで表示するために

 Visual Studio .NETで使用可能な、.NET Frameworkの標準コントロールは図Aのように、
Windows XPで実行してもスタイルが反映されていません(サンプルNormalControls)。

図A:フォームに貼った各種コントロール


 これを解決するためには、「マニフェストファイル」というものを作成して、
Visual Studio .NET(以下VS.NET)で使用した、標準コントロールをWindows XPのコントロールとして
使用できるように指定します(サンプルWindowsXPStyleControls)。
マニフェストファイルは「実行形式名.exe.manifest」というファイル名にし、
内容はリストBのような形式になります。

リストB:マニフェストファイルの内容
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
 manifestVersion="1.0">
<assemblyIdentity
 version="1.0.0.0"
 processorArchitecture="X86"
 name="Microsoft.Winweb.<実行形式名(EXEを含む)>"
 type="win32"
/>
<description>.NET control deployment tool</description>
<dependency>
 <dependentAssembly>
  <assemblyIdentity
   type="win32"
   name="Microsoft.Windows.Common-Controls"
   version="6.0.0.0"
   processorArchitecture="X86"
   publicKeyToken="6595b64144ccf1df"
   language="*"
  />
 </dependentAssembly>
</dependency>
</assembly>


 これを利用したサンプルWindowsXPStyleControlsの実行結果は、図Cです。
これを見るとわかるように、以下のコントロールはデフォルトではスタイルが変わりません。

図C:一部がWindowsXPスタイルになっていない



・Label
・Button
・CheckBox
・RadioButton


そこで、上記コントロールのFlatStyleプロパティを

   button1.FlatStyle = FlatStyle.System;

のように変更してください(サンプルEmbeddedManifest)。
マニフェストファイルを実行可能ファイル(EXE)と同じディレクトリに追加して、
これを実行すると図Dのように先ほど変化のなかったコントロールもWindowsXPスタイルになります。

図D:すべてのコントロールがWindowsXPスタイルになった



 マニフェストファイルは実行可能ファイルと同じディレクトリに置いておく必要がありますが、
実はアセンブリに埋め込むことが可能です。

マニフェストをリソースとして埋め込む手順

 以下にマニフェストをアセンブリにリソースとして埋め込む手順を示します。

@VS.NETのメニューから[ファイル]-[開く]-[ファイル]を選択

A「ファイルを開く」ダイアログボックスが開くので、現在作業中のソリューションを
含んでいるディレクトリに移動してobjディレクトリを開く。
そして、(開発環境で設定したビルドオ9 dotNET Magazine 2004 Aprilプションに応じて)
DebugまたはReleaseディレクトリを開いて実行可能ファイルを探し出し、
実行可能ファイルをダブルクリックしてVS.NET環境内で開く

Bデザイナ内で実行可能ファイルを右クリックし、[リソースの追加]を選択

C「リソースの追加」ダイアログボックスが開くので、[インポート]ボタンをクリック

D「インポート」ダイアログボックスが開くので、ダイアログボックスの
「ファイルの種類」フィールドを「すべてのファイル(*.*)」に設定して、
作成したマニフェストがあるディレクトリに移動。
そして、マニフェストファイルをダブルクリック

E「カスタムリソースの種類」ダイアログボックスが開くので、
「リソースの種類」ボックスに“RT_MANIFEST”と入力し、
[OK]ボタンをクリック

Fプロパティウィンドウで、IDプロパティを“1”に設定

GVS.NETのメニューから[ファイル]-[すべてを保存]を選択して、変更を保存


マニフェストをリソースへ埋め込む場合の注意点

上記の操作では、objディレクトリにある、一時ファイルに対して操作が行なわれています。
そのため、ソースファイルに少しでも変更を加えてリビルドしたときに、埋め込まれたリソースは消えてしまいます。
これを防ぐには、デバッグ時など、頻繁に変更があるときはディレクトリにマニフェストファイルを
置いておく方式にして、出荷前にアセンブリに埋め込むとよいでしょう。


前へ | ページトップへ