次の方法で共有


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

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

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

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

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

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

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

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

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

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 プロパティを設定する必要があります。詳細については、「MinimumSplashScreenDisplayTime」を参照してください。

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

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

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

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

  3. OnRun.初期化の完了後、メイン アプリケーションが実行される開始点を提供します。

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

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

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

    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

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

の チェック ボックス[単一インスタンス アプリケーションを作成します。]

EnableVisualStyles

アプリケーションがWindows XPに一致する視覚スタイルを使用します。

の チェック ボックス[XPの視覚スタイルを有効にします。]

SaveMySettingsOnExit

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

の チェック ボックス[シャットダウン時My.Settingsを保存します。]

ShutdownStyle

アプリケーションが終了すると、などのスタートアップ フォームが閉じたとき、または最後のフォームが閉じたとき。

[シャットダウン モード] の一覧

参照

関連項目

ApplicationBase

Startup

StartupNextInstance

UnhandledException

Shutdown

NetworkAvailabilityChanged

WindowsFormsApplicationBase

[アプリケーション] ページ (プロジェクト デザイナー) (Visual Basic)

概念

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