DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

DOBON.NET

コントロールの外観をXPスタイルにする

下図のようにコントロールの見た目をWindows XP独特のものに変える方法です。当たり前のことですが、Windows XP以上のOSで有効です。

XPスタイルのコントロール

Visual Studio 2005以降では、デフォルトでXPスタイルで表示されるようになっています。ここで紹介する方法は、これを無効にする(あるいは無効になってしまったものを元に戻す)目的でも参考になるでしょう。

Visual Studio 2005以降のVB.NETで、Visual Basicアプリケーションモデルを使用する方法

Visual Studio 2005以降のVB.NETを使用している場合は、次のような方法でできます。

1.メニューの「プロジェクト」-「プロパティ」により、プロジェクトのプロパティを表示します。

2.「アプリケーション」タブ(デフォルトで表示される)を選択します。

3.「アプリケーションフレームワークを有効にする」にチェックを入れて、有効にします。

4.「Windowsアプリケーションフレームワークプロパティ」の「XP Visual スタイルを有効にする」にチェックを入れ、有効にします。

5.以上です。

EnableVisualStylesを使用する方法

.NET Farmework 1.1以降では、Application.EnableVisualStylesメソッドを使用できます。以下にその手順を示します。

1..NET Framework 1.1の場合、FlatStyleプロパティがあるコントロールは、これをSystemに変更します。System.Windows.Forms.ButtonBaseクラスから派生したコントロールがこれにあたります。.NET Framework 2.0以降では、この必要がありません。

2.エントリポイントのMain関数の一行目に
Application.EnableVisualStyles()
を記述します。

なお、エントリポイントについては、こちらで説明しています。

[VB.NET]
<STAThread()> _
Public Shared Sub Main()
    Application.EnableVisualStyles()
    'TooBarの画像が表示されない場合は次の行を加える
    'Application.DoEvents()
    Application.Run(New Form1)
End Sub
[C#]
[STAThread]
static void Main() 
{
    Application.EnableVisualStyles();
    //TooBarの画像が表示されない場合は次の行を加える
    //Application.DoEvents();
    Application.Run(new Form1());
}

3.以上です。

補足:ただしこの方法は、.NET Farmework 1.1では、多くの問題があるようなので、あまりお勧めできません。下に紹介するマニフェストファイルを使う方法をお勧めします。.NET Farmework 2.0以降では問題なく、上記の「Application.DoEvents」も必要ありません。

マニフェストファイルを使用する方法

.NET Farmework 1.0の場合は、マニフェストファイルを作成する必要があります。以下にその手順を示します

1.上と同じく、FlatStyleプロパティがあるコントロールは、これをSystemに変更します。

2.下記の内容のテキストファイル(文字コードはUTF-8)を作り、ファイル名を「(EXEファイルのファイル名).manifest」(たとえば「VB1.exe.manifest」)としてEXEファイルと同じフォルダに保存します。このとき「name="VB1.exe"」の「VB1.exe」のところを必ずEXEファイルのファイル名(または、「name="Microsoft.Winweb.(EXEファイル名)"」)に変えてください。またversionやdescriptionも変えたほうがよいでしょう。

<?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="VB1.exe"
type="win32"
/>
<description>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>

3.EXEファイルを実行させると、きっとXPスタイルになっているでしょう。

マニフェストファイルを実行ファイルに埋め込む

マニフェストファイルを実行ファイルに埋め込む方法は、MSDNの「Using Windows XP Visual Styles With Controls on Windows Forms」や、The Code Projectの「Windows XP Visual Styles for Windows Forms」で紹介されています。つまりは、Win32リソースとしてマニフェストファイルをEXEファイルに埋め込めばよいということです。Visual Studioを使用すると、次のような方法になります。

1.「ファイル」-「開く」-「ファイル...」により、"obj"フォルダ内の"Debug"または"Release"フォルダの実行ファイルを開きます。

2.実行ファイルを右クリックして表示されるメニューから「リソースの追加...」を選びます。

3.「インポート...」ボタンをクリックして、すでに作成してあるマニフェストファイルを選びます。

4.「カスタムリソースの種類」ダイアログで、「リソースの種類」に"RT_MANIFEST"と入力して、「OK」をクリックします。

5.「プロパティ」ウィンドウの「ID」を"1"に変更します。

6.保存して、終了です。

補足:または、/win32res(VB.NETでは、/win32resource)コンパイラオプションを使用してcsc.exe(VB.NETでは、vbc.exe)でコンパイルすることによっても可能です。

補足:Visual Studioでマニフェストファイルを埋め込む方法では、ビルド後に毎回埋め込む操作が必要になり、かなり面倒です。簡単に埋め込むためには、それ専用のアプリケーションを利用するという手もあります。ちなみに、マニフェストファイルをEXEファイルに埋め込むことによりXPスタイルにするというオンラインソフトは幾つか存在するようです。Vectorから「XP スタイル」で検索すると幾つかヒットし、その内「ExeStyleXP」はEXEファイルに埋め込むことができ、コマンドラインからも起動できるようで、とても便利です。これを使えば、プロジェクトのプロパティの「ビルド後のイベントコマンドライン」を

"C:\Program Files\ExeStyleXP\ExeStyleXP.exe" "$(TargetPath)"

のようにすることにより、ビルド後に自動的にマニフェストファイルを埋め込むことができるでしょう。

  • 履歴:
  • 2007/2/5 .NET Framework 2.0に関する情報を追加。