Visual Basic アプリケーション モデルの拡張

更新 : 2007 年 11 月

WindowsFormsApplicationBase クラスの Overridable メンバをオーバーライドすることによって、アプリケーション モデルに対して機能を追加できます。このテクニックを使用すると、アプリケーション モデルの動作をカスタマイズしたり、アプリケーションの起動時および終了時に独自のメソッドの呼び出しを追加したりできます。

アプリケーション モデルの視覚的な概要

このセクションでは、Visual Basic アプリケーション モデルにおける関数呼び出しのシーケンスを視覚的に示します。各関数の目的については、この後のセクションで詳しく説明します。

次の図は、一般的な Visual Basic Windows フォーム アプリケーションにおけるアプリケーション モデルの呼び出しシーケンスを示しています。シーケンスは Sub Main プロシージャによる Run メソッドの呼び出しで始まります。

Visual Basic アプリケーション モデル -- 実行

Visual Basic アプリケーション モデルでは、StartupNextInstance イベントと UnhandledException イベントも使用できます。次の図は、これらのイベントが発生するしくみを示しています。

Visual Basic アプリケーション モデル -- 次のインスタンスVisual Basic アプリケーション モデル ハンドルされていない例外

基本メソッドのオーバーライド

Application のメソッドが実行される順序は、My.Application.Run メソッドにより定義されます。既定では、Windows フォーム アプリケーションの Sub Main プロシージャから Run メソッドが呼び出されます。

アプリケーションが通常のアプリケーション (複数インスタンス アプリケーション) の場合、または単一インスタンス アプリケーションの最初のインスタンスの場合には、Run メソッドは一連の Overridable メソッドを次の順序で実行します。

  1. OnInitialize。既定では、このメソッドは、visual スタイル、テキスト表示スタイル、およびメイン アプリケーション スレッドの現在のプリンシパル (Windows 認証を使用するアプリケーションの場合) を設定し、コマンド ライン引数に /nosplash と -nosplash のいずれも指定されていない場合には ShowSplashScreen を呼び出します。

    この関数が False を返した場合、アプリケーションの起動処理はキャンセルされます。これは、状況に応じてアプリケーションの実行が不要な場合に役立ちます。

    OnInitialize メソッドは以下のメソッドを呼び出します。

    1. ShowSplashScreen。アプリケーションにスプラッシュ スクリーンが定義されているかどうかを判断し、定義されている場合はそのスプラッシュ スクリーンを別スレッドで表示します。

      ShowSplashScreen メソッドには、MinimumSplashScreenDisplayTime プロパティで指定されたミリ秒以上スプラッシュ スクリーンを表示するコードが含まれています。この機能を使用するためには、プロジェクト デザイナを使用してアプリケーションにスプラッシュ スクリーンを追加するか (この場合は My.Application.MinimumSplashScreenDisplayTime プロパティは 2 秒に設定されます)、または OnInitialize メソッドか OnCreateSplashScreen メソッドをオーバーライドするメソッドで My.Application.MinimumSplashScreenDisplayTime プロパティを設定する必要があります。詳細については、「My.Application.MinimumSplashScreenDisplayTime プロパティ」を参照してください。

    2. OnCreateSplashScreen。スプラッシュ スクリーンを初期化するコードをデザイナが追加できます。

      既定では、このメソッドは何も実行しません。Visual Basicプロジェクト デザイナでアプリケーションのスプラッシュ スクリーンを選択した場合、デザイナは、SplashScreen プロパティをスプラッシュ スクリーン フォームの新しいインスタンスに設定するメソッドで OnCreateSplashScreen メソッドをオーバーライドします。

  2. OnStartup。Startup イベントの発生を機能拡張するための部分です。この関数が False を返した場合、アプリケーションの起動処理は中断されます。

    既定では、このメソッドは Startup イベントを発生させます。イベント ハンドラが、イベント引数の Cancel プロパティを True に設定した場合、このメソッドは False を返し、アプリケーションの起動処理はキャンセルされます。

  3. OnRun。初期化処理の完了後、メイン アプリケーションを実行する準備ができたときのための開始点です。

    既定では、このメソッドは、Windows フォームのメッセージ ループに入る前に、OnCreateMainForm メソッド (アプリケーションのメイン フォームを作成するため) および HideSplashScreen メソッド (スプラッシュ スクリーンを閉じるため) を呼び出します。

    1. OnCreateMainForm。メイン フォームを初期化するコードをデザイナが追加するための手段を提供します。

      既定では、このメソッドは何も実行しません。しかし、Visual Basicプロジェクト デザイナでアプリケーションのメイン フォームを選択した場合、デザイナは、MainForm プロパティをメイン フォームの新しいインスタンスに設定するメソッドで OnCreateMainForm メソッドをオーバーライドします。

    2. HideSplashScreen。スプラッシュ スクリーンが定義されているアプリケーションで、スプラッシュ スクリーンが開かれている場合には、このメソッドがそれを閉じます。

      既定では、このメソッドはスプラッシュ スクリーンを閉じます。

  4. OnStartupNextInstance。単一インスタンス アプリケーションのインスタンスが二重起動されたときの動作をカスタマイズする手段を提供します。

    既定では、このメソッドは StartupNextInstance イベントを発生させます。

  5. OnShutdown。Shutdown イベントの発生を機能拡張するための部分です。このメソッドは、メイン アプリケーションで未処理の例外が発生した場合には実行されません。

    既定では、このメソッドは Shutdown イベントを発生させます。

  6. OnUnhandledException。上記のいずれかのメソッドで未処理の例外が発生したときに実行されます。

    既定では、デバッガがアタッチされておらず、かつアプリケーションが UnhandledException イベントを処理している場合に、このメソッドは UnhandledException イベントを発生させます。

単一インスタンス アプリケーションの場合で、同じアプリケーションが既に実行中のときには、二重起動された方のインスタンスは、同じアプリケーションの元のインスタンスの OnStartupNextInstance メソッドを呼び出し、自らは終了します。

WindowsFormsApplicationBase コンストラクタは UseCompatibleTextRendering プロパティを呼び出して、アプリケーションのフォームにどのテキスト描画エンジンを使用するかを判断します。既定では、UseCompatibleTextRendering プロパティは False を返します。これは Visual Basic 2005 の既定である GDI テキスト描画エンジンが使用されることを示します。UseCompatibleTextRendering プロパティは、True を返すようにオーバーライドできます。この値は、Visual Basic .NET 2002 および Visual Basic .NET 2003 の既定である GDI+ のテキスト描画エンジンが使用されることを示します。

アプリケーションの構成

Visual Basic アプリケーション モデルの一環として、WindowsFormsApplicationBase クラスには、アプリケーションを構成するプロテクト プロパティが用意されています。これらのプロパティは、実装するクラスのコンストラクタで設定する必要があります。

既定の Windows フォーム プロジェクトでは、プロジェクト デザイナは、デザイナの設定でこれらのプロパティを設定するコードを作成します。これらのプロパティが使用されるのはアプリケーションの起動時のみです。アプリケーションが起動された後で値を設定しても効果はありません。

プロパティ

意味

プロジェクト デザイナでの設定

IsSingleInstance

アプリケーションが単一インスタンス アプリケーションまたは複数インスタンス アプリケーションとして動作するかどうかを表します。

方法 : アプリケーションのインスタンス化の動作を指定する (Visual Basic)

EnableVisualStyles

アプリケーションが XP visual スタイルを使用するかどうかを表します。

方法 : Visual スタイルを有効にする (Visual Basic)

SaveMySettingsOnExit

アプリケーションの終了時に、ユーザー設定の変更をアプリケーションが自動的に保存するかどうかを表します。

プロジェクト デザイナのアプリケーション ペインの [シャットダウン時に My.Settings を保存する] チェック ボックスをオンにします。

ShutdownStyle

メイン フォームが閉じたときや、すべてのフォームが閉じたときなど、どのようなときにアプリケーションを終了させるかを表します。

方法 : アプリケーションのシャットダウン動作を指定する (Visual Basic)

参照

概念

Visual Basic アプリケーション モデルの概要

参照

My.Application オブジェクト

My.Application.Startup イベント

My.Application.StartupNextInstance イベント

My.Application.UnhandledException イベント

My.Application.Shutdown イベント

My.Application.NetworkAvailabilityChanged イベント

WindowsFormsApplicationBase