次の方法で共有


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

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

アプリケーション モデルのビジュアルの概要

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

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

アプリケーション モデルの呼び出しシーケンスを示す図。

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

StartupNextInstance イベントを発生させる OnStartupNextInstance メソッドを示す図。

UnhandledException イベントを発生させる OnUnhandledException メソッドを示す図。

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

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. OnStartupStartup イベントを発生させるための拡張ポイントを提供します。 この関数が Falseを返すと、アプリケーションの起動シーケンスが停止します。

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

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

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

    1. OnCreateMainForm。 デザイナーがメイン フォームを初期化するコードを出力する方法を提供します。

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

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

      既定では、このメソッドはスプラッシュ画面を閉じます。

  4. OnStartupNextInstance。 アプリケーションの別のインスタンスが起動したときに単一インスタンス アプリケーションがどのように動作するかをカスタマイズする方法を提供します。

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

  5. OnShutdownShutdown イベントを発生させるための拡張ポイントを提供します。 メイン アプリケーションでハンドルされない例外が発生した場合、このメソッドは実行されません。

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

  6. OnUnhandledException。 上記のいずれかのメソッドでハンドルされない例外が発生した場合に実行されます。

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

アプリケーションが単一インスタンス アプリケーションであり、アプリケーションが既に実行されている場合、アプリケーションの後続のインスタンスは、アプリケーションの元のインスタンスで OnStartupNextInstance メソッドを呼び出して終了します。

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

アプリケーションの構成

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

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

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

こちらも参照ください