DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

アプリケーション開始時のフォームを非表示にする

ここでは、アプリケーション開始時はフォームを作成せずに、条件によって作成、表示する方法を紹介します。なお、NotifyIconコンポーネントを使用してタスクトレイにアイコンを表示される場合などのように、フォームのインスタンスは作成してもフォームを表示させないでアプリケーションを開始する方法は「フォームを表示させずにトレイアイコンを表示する」で紹介します。

この方法は、MSDNの「フォームが開始時に非表示になるように設定する」で紹介されています。これは、エントリポイントのMainメソッドでメインフォームを表示するかを判断し、条件が満たされた時のみメインフォームを表示するという方法です。MSDNの例ではForm.ShowDialogメソッドでフォームを表示させていますが、通常はApplication.Runで表示させた方が良いでしょう。

メインフォームを表示させる前にメッセージボックスを表示して、Yesボタンがクリックされた時だけメインフォームを表示する例を紹介します。エントリポイントのMainメソッドを下のコードのように書き換えてください。なおエントリポイントを書き換える方法については、「アプリケーションのエントリポイントを自作する」をご覧ください。

VB.NET
コードを隠すコードを選択
<STAThread> _
Shared Sub Main()
    'Yesの時のみ、フォームを表示する
    If MessageBox.Show("フォームを表示しますか?", _
            "質問", MessageBoxButtons.YesNo) = _
                System.Windows.Forms.DialogResult.Yes Then
        '.NET Framework 1.0の時は下の1行を削除
        Application.EnableVisualStyles()
        '.NET Framework 1.1以下の時は下の1行を削除
        Application.SetCompatibleTextRenderingDefault(False)

        Application.Run(New Form1())
    End If
End Sub
C#
コードを隠すコードを選択
[STAThread]
public static void Main()
{
    //Yesの時のみ、フォームを表示する
    if (MessageBox.Show("フォームを表示しますか?", "質問",
        MessageBoxButtons.YesNo) == DialogResult.Yes)
    {
        //.NET Framework 1.0の時は下の1行を削除
        Application.EnableVisualStyles();
        //.NET Framework 1.1以下の時は下の1行を削除
        Application.SetCompatibleTextRenderingDefault(false);

        Application.Run(new Form1());
    }
}

Application.RunとForm.ShowDialogの違い

この章の内容は、「Application.RunとForm.ShowDialogの違い」に移動しました。

STAThreadの意味は?

この章の内容は、「STAThreadの意味は?」に移動しました。

  • 履歴:
  • 2010/4/15 .NET Framework 2.0の情報を追記。「STAThreadの意味は?」を大幅に書き換える。
  • 2013/6/22 「Application.RunとForm.ShowDialogの違い」と「STAThreadの意味は?」を別のページに移動。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。