ここでは、アプリケーション開始時はフォームを作成せずに、条件によって作成、表示する方法を紹介します。なお、NotifyIconコンポーネントを使用してタスクトレイにアイコンを表示される場合などのように、フォームのインスタンスは作成してもフォームを表示させないでアプリケーションを開始する方法は「フォームを表示させずにトレイアイコンを表示する」で紹介します。
この方法は、MSDNの「フォームが開始時に非表示になるように設定する」で紹介されています。これは、エントリポイントのMainメソッドでメインフォームを表示するかを判断し、条件が満たされた時のみメインフォームを表示するという方法です。MSDNの例ではForm.ShowDialogメソッドでフォームを表示させていますが、通常はApplication.Runで表示させた方が良いでしょう。
メインフォームを表示させる前にメッセージボックスを表示して、Yesボタンがクリックされた時だけメインフォームを表示する例を紹介します。エントリポイントのMainメソッドを下のコードのように書き換えてください。なおエントリポイントを書き換える方法については、「アプリケーションのエントリポイントを自作する」をご覧ください。
<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
[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の違い」に移動しました。
この章の内容は、「STAThreadの意味は?」に移動しました。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。