ここでは、下図のようにコントロールの見た目をWindows XP以降のビジュアルスタイル(Windows XP スタイル、Luna、Whistlerスタイル)に変える方法について説明します。また、Visual Studio 2005以降ではビジュアルスタイルがデフォルトで有効になっていますが、これを無効にする方法についても説明します。
なお、ビジュアルスタイルに対応していないOSや、設定でビジュアルスタイルを無効にしている場合は、ここで紹介している方法ではビジュアルスタイルになりません。
Visual Studio 2005以降のVB.NETを使用している場合は、次のような方法でビジュアルスタイルを有効(または無効)にすることができます。
.NET Farmework 1.1以降では、Application.EnableVisualStylesメソッドを使用できます。以下にその手順を示します。
<STAThread()> _ Public Shared Sub Main() Application.EnableVisualStyles() 'TooBarの画像が表示されない場合は次の行を加える 'Application.DoEvents() Application.Run(New Form1) End Sub
[STAThread] static void Main() { Application.EnableVisualStyles(); //TooBarの画像が表示されない場合は次の行を加える //Application.DoEvents(); Application.Run(new Form1()); }
補足:ただしこの方法は、.NET Farmework 1.1では、多くの問題があるようなので、あまりお勧めできません。下に紹介するマニフェストファイルを使う方法をお勧めします。.NET Farmework 2.0以降では問題なく、上記の「Application.DoEvents」も必要ありません。
.NET Farmework 1.0の場合は、マニフェストファイルを作成する必要があります。以下にその手順を示します。
<?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="Organization.Division.Name" type="win32" /> <description>アプリケーションの説明</description> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*" /> </dependentAssembly> </dependency> </assembly>
マニフェストファイルを実行ファイルに埋め込む方法は、MSDNの「Using Windows XP Visual Styles With Controls on Windows Forms」や、The Code Projectの「Windows XP Visual Styles for Windows Forms」で紹介されています。つまりは、Win32リソースとしてマニフェストファイルを実行ファイルに埋め込めばよいということです。
実行ファイルにWin32リソースを埋め込む方法は、「Win32リソースを実行ファイルに埋め込む」で詳しく説明していますので、そちらをご覧ください。
補足:Visual StudioやPlatform SDKに付属しているマニフェストツール「mt.exe」を使って、マニフェストファイルを埋め込むこともできます。例えば、プロジェクトフォルダにマニフェストファイルを置いて、Visual Studioでプロジェクトのプロパティの「ビルド後のイベントコマンドライン」(C#では「ビルドイベント」タブ、Visual Studio 2005以上のVB.NETでは「コンパイル」タブの「ビルドイベント」、Visual Studio 2003以下のVB.NETでは不可)を
mt.exe -manifest "$(ProjectDir)$(TargetFileName).manifest" -outputresource:"$(TargetPath)";1
とすると、ビルド後に自動的にマニフェストファイルを埋め込むことができます。
補足:アプリケーションをビジュアルスタイルにするためのマニフェストを自動的に作成してくれるフリーのツールが幾つか存在し、Vectorから「XP スタイル」で検索すると見つかります。さらにその中にはマニフェストを実行ファイルに埋め込んでくれるものもあります。例えば「ExeStyleXP」はEXEファイルに埋め込むことができ、コマンドラインからも起動できるようで、とても便利です。これを使えば、プロジェクトのプロパティの「ビルド後のイベントコマンドライン」(C#では「ビルドイベント」タブ、Visual Studio 2005以上のVB.NETでは「コンパイル」タブの「ビルドイベント」、Visual Studio 2003以下のVB.NETでは不可)を
ExeStyleXP.exe "$(TargetPath)"
とすると、ビルド後に自動的にマニフェストファイルを埋め込むことができます。
補足:Visual Studio 2008以降では、プロジェクトのプロパティの設定によってマニフェストを自動で埋め込むことができます。詳しくは、「UACが有効の時、アプリケーションを管理者に昇格させて起動する」をご覧ください。
Visual Studio 2005以降で、デフォルトで有効になっているビジュアルスタイルを無効にするには、以下のようにします。
VB.NETの場合は、「Windowsアプリケーションフレームワークプロパティ」の「XP Visual スタイルを有効にする」に付いているチェックを外すと、無効にできます。詳しくは、上記「Visual Basicアプリケーションモデルを使用する方法」をご覧ください。
C#の場合は、エントリポイントメソッド(Mainメソッド)に記述されている「Application.EnableVisualStyles();」を削除します。「Application.EnableVisualStyles();」がどこに記述されているか分からない場合は、「EnableVisualStyles」で検索してみてください。
詳しくは、上記「EnableVisualStylesメソッドを使用する方法」をご覧ください。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。