AQUA's .NET 奮闘記

Hobby Programmer の成長記録

目次

ニュース

  • わんくま同盟
    わんくま同盟
  • わんくま掲示板
    C# と VB.NET の質問掲示板
スカウター : AQUA's .NET 奮闘記

日記カテゴリ

記事カテゴリ

書庫

Blog 利用状況

わんくま同盟 AWARD

わんくま同盟 影

Sub Main()で呼び出されたフォームをXP/Vistaスタイルにする。

Windows フォーム アプリケーションをIDE(統合開発環境:Visual Basic 2005等)の手順に従って作成した場合、Sub Main()プロシージャはコンパイラによって自動的に作成されます。
一方で、開発者の側でエントリポイントを作成し、アプリケーションの制御をおこなう事も可能です。
その、自作のエントリポイントからフォームを呼び出す際に、手を加えなければフォームの外観はクラッシックスタイルで表示されます。
今回の記事は自作のエントリポイントからフォームを呼び出した際の外観をクラッシックスタイルではなくXPあるいはVistaのスタイルにする方法です。


新しいプロジェクトを作成するのですが、ひとまずここでは空のプロジェクトを作成するところから始めます。


1・Visual Studio 2005 (あるいはVisual Basic 2005)を起動し、メニューのファイルから[新規作成(N)]→[プロジェクト(P)]の順番で選択し、『新しいプロジェクト』と題したダイアログフォームを呼び出します。
2・プロジェクトの種類(P)の中からWindowsを選択します。
3・テンプレート(T):の中から[空のプロジェクト]を選択し、プロジェクト名を指定し、OKボタンをクリックし、プロジェクトを作成します。
4・メニューの[プロジェクト(P)]から[新しい項目の追加]を選択し、[クラス]を選択します。ファイル名は任意で構いませんが、ここではEntryClass.vbとしておきます。
5・4の手順と同様の方法で、今度は[クラス]ではなく[Windows フォーム]を選択します。ファイル名はこれも任意で結構ですが、そのままForm1.vbで作成します。
6・ソリューションエクスプローラーからForm1をダブルクリックで呼び出し、ButtonコントロールとProgressBarコントロールを貼り付けます。
7・今回の検証結果を容易に確認する為に、プロパティの設定についてはButtonコントロールのSizeプロパティを(75, 30)に、ProgressBarコントロールのValueプロパティを20に設定してください。
※この時の画面は以下のような感じです。
6・次に追加したクラス(EntryClass.vb)を選択し、以下のにコードを記述します。

Imports System
Imports System.Windows.Forms
Public Class EntryClass
    
    Public Shared Sub Main()
        
        Application.Run(New Form1)
    End Sub
End Class


9・デバッグで動作を確認します。

Sub Main()プロシージャからForm1が確認できたと思いますが、ButtonコントロールとProgressBarコントロールの外観がクラッシックスタイルになっている事が確認できると思います。
10・今回の目的はSub Main()で呼び出されるフォームの外観をXPもしくはVistaのスタイルにすることですので、8・で記述したコードに赤い文字で示された以下のコードを追加します。

Imports System
Imports System.Windows.Forms
Public Class EntryClass
    
    Public Shared Sub Main()
        Application.EnableVisualStyles()
        Application.DoEvents()
        Application.Run(New Form1)
    End Sub
End Class

11・再度デバッグにて変更した後の外観を確認します。

さて、10で追加したコードでは何が行われたのでしょうか?
今回のポイントはApplication.EnableVisualStyles()メソッドです。EnableVisualStyles()メソッドを呼び出すことによりフォームの外観を変更できます。
また、EnableVisualStyleにはいくつかのバグが報告されており、それを制御するためにApplication.DoEvents()メソッドを使っています。

投稿日時 : 2007年9月22日 16:25

Feedback

No comments posted yet.
タイトル  
名前  
Url
コメント