忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

フォームの表示をモジュールのMain関数から行う(エントリポイントの変更)

VB.NETの場合、フォームを表示する場合にはプロジェクトプロパティの中の設定でスタートアップオブジェクトを 対象となるフォームを選択して実行すれば、そのフォームが最初に表示されます。 以下の図は、スタートアップオブジェクトForm1に設定したところを示します。


簡単なプログラムであればこの方法で良いのですが、いきなりフォームが表示されては困ることもあります。 フォームが表示される前に行いたい処理がいろいろあったりします。 そこで、プログラムの開始位置であるエントリポイントを変更することで、 フォームの表示前に処理が出来る様になります。

以下のソースを見て下さい。Main関数を定義したモジュールファイルを作成します。 先ほどのスタートアップオブジェクトをこのMain関数に設定することで プログラムのエントリポイントがMain関数になります。 つまり、プログラムはMain関数から開始されることになります。

エントリポイントをSub Mainにする

Module MdlMain

    <STAThread()> _
    Sub Main()
        '=====
        '初期処理...
        '=====

        'フォーム表示
        Dim frmForm1 As New Form1
        Application.Run(frmForm1)
    End Sub

End Module

もしフォーム表示前の処理を行いたい場合には、Application.Runの前までに記述します。 私が組んだプログラムでは、以下の様な処理を行ったりしました。

  • プログラムの二重起動を抑制する。
  • プログラム起動の引数の取得とチェックを行う。
  • ログ出力の初期処理を行う。
  • データベースのオープン処理を行い、エラーの場合は処理を中断する。


尚、以下の図はプロジェクトプロパティの中の設定でスタートアップオブジェクトSub Mainに設定したところを示します。


VB.NETでは、Mainメソッド(またはプロシージャ)がエントリポイントです。ところが、Windowsフォームアプリケーションプロジェクトのどこを探してもMainメソッドがありません。エントリポイントとなるMainメソッドは、コンパイラによって自動的に作成されます。 補足:Visual Studio 2005以降では、「アプリケーションフレームワークを有効にする」を無効にしないと、本当のエントリポイントを変更することはできません。「アプリケーションフレームワークを有効にする」を有効にしたときのエントリポイントは、MyApplicationクラスのMainメソッドとなるようです。
モジュールでファイルではなく、クラスファイルに以下の様にShared Sub Main関数を宣言しても同じことができます。

エントリポイントをクラスのSub Mainにする

Public Class ClsMain

    <STAThread()> _
    Shared Sub Main()
        Application.Run(New Form1)
    End Sub

End Class

関連する記事

フォームの位置設定を行う処理     :[Screen.PrimaryScreen.WorkingArea]
フォームクラスにプロパティ宣言し外からアクセスする方法
親フォームのコントロールを子フォームからアクセスする方法
フォームが閉じるのをキャンセルする方法:[FormClosingEventArgs,Cancel]
フォームの表示をモジュールのMain関数から行う(エントリポイントの変更)
フォームがKeyDownなどのキーイベントを受取り、ファンクションキー処理をする
最初のフォームActivatedイベントでの処理(1回のみしか処理しない様にする)
初回のフォームActivatedイベント発生させるフォーム継承について











PR

コメント

コメントを書く