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

アプリケーション モデルに機能を追加するには、WindowsFormsApplicationBase クラスの Overridable メンバーをオーバーライドします。 この手法を使用して、アプリケーション モデルの動作をカスタマイズし、アプリケーションの起動時およびシャットダウン時に、独自のメソッドの呼び出しを追加できます。

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

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

次の図は、通常の Visual Basic Windows フォーム アプリケーションのアプリケーション モデル呼び出しシーケンスを示しています。 Sub Main プロシージャで Run メソッドを呼び出すと、シーケンスが開始されます。

Diagram showing the Application Model call sequence.

Visual Basic アプリケーション モデルでは、StartupNextInstance イベントと UnhandledException イベントも提供されます。 次の図は、これらのイベントを発生させるメカニズムを示しています。

Diagram showing the OnStartupNextInstance method raising the StartupNextInstance event.

Diagram showing the OnUnhandledException method raising the UnhandledException event.

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

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

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

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

    この関数から False が返されると、アプリケーションの起動シーケンスが取り消されます。 これは、アプリケーションを実行するべきではない状況がある場合に便利です。

    OnInitialize メソッドでは、次のメソッドが呼び出されます。

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

      ShowSplashScreen メソッドには、MinimumSplashScreenDisplayTime プロパティに指定されたミリ秒間以上、スプラッシュ スクリーンを表示するコードが含まれます。 この機能を使用するには、プロジェクト デザイナーを使用して、アプリケーションにスプラッシュ スクリーンを追加する (これにより My.Application.MinimumSplashScreenDisplayTime プロパティが 2 秒に設定される) か、または OnInitialize メソッドまたは OnCreateSplashScreen メソッドをオーバーライドするメソッドで、My.Application.MinimumSplashScreenDisplayTime プロパティを設定する必要があります。 詳細については、「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 メソッドが呼び出されてから、終了します。

OnStartupNextInstance(StartupNextInstanceEventArgs) コンストラクターでは、UseCompatibleTextRendering プロパティが呼び出され、アプリケーションのフォームに使用するテキスト レンダリング エンジンが決定されます。 既定では、UseCompatibleTextRendering プロパティによって False が返されます。これは、GDI テキスト レンダリングエンジンが使用されることを示します。これは Visual Basic 2005 以降のバージョンの既定です。 UseCompatibleTextRendering プロパティが True を返すようにオーバーライドできます。これは、Visual Basic .NET 2002 および Visual Basic .NET 2003 の既定である GDI + テキスト レンダリング エンジンを使用することを示します。

アプリケーションの構成

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

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

プロパティ 決定内容 プロジェクト デザイナーのアプリケーション ウィンドウの設定
IsSingleInstance アプリケーションを単一インスタンス アプリケーションと複数インスタンス アプリケーションのどちらとして実行するか。 [単一インスタンスのアプリケーションを作成する] チェックボックス
EnableVisualStyles アプリケーションで Windows XP に一致する視覚スタイルを使用するかどうか。 [XP Visual スタイルを有効にする] チェックボックス
SaveMySettingsOnExit アプリケーションの終了時に、アプリケーションで、アプリケーションのユーザー設定の変更を自動的に保存するかどうか。 [シャットダウン時に My.Settings を保存する] チェックボックス
ShutdownStyle スタートアップ フォームが閉じたときや、最後のフォームが閉じたときなど、アプリケーションが終了する原因。 [シャットダウン モード] リスト

関連項目