方法 : Windows フォームをモーダルおよびモードレスで表示する
更新 : 2007 年 11 月
フォームおよびダイアログ ボックスは、モーダルまたはモードレスのいずれかで表示されます。"モーダル" なフォームまたはダイアログ ボックスは、アプリケーションの他の作業に移行する前に、終了する (非表示にする) 必要があります。ダイアログ ボックスの使用の詳細については、「ダイアログ ボックスへのユーザー入力」を参照してください。
重要なメッセージを表示するダイアログ ボックスは、常にモーダルで表示する必要があります。Visual Studio の [バージョン情報] ダイアログ ボックスは、モーダル ダイアログ ボックスの一例です。MessageBox は使用できるモーダル フォームです。
"モードレス" なフォームの場合は、開いているフォームを閉じなくても、他のフォームとの間で自由にフォーカスを移動できます。ユーザーは、フォームを表示したまま、任意のアプリケーションで作業を継続できます。
モードレスなフォームは、ユーザーが任意の順番でアクセスできるため、プログラミングが複雑になります。ユーザーの操作内容にかかわらず、アプリケーションの状態が一定に保たれる必要があります。通常、ツール ウィンドウは、モードレスで表示されます。Visual Studio の [編集] メニューからアクセスできる [検索] ダイアログ ボックスは、モードレス ダイアログ ボックスの一例です。頻繁に使用するコマンドや情報を表示する場合は、モードレスなフォームを使用します。
メモ : |
---|
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。 |
モーダル ダイアログ ボックスとしてフォームを表示するには
ShowDialog メソッドを呼び出します。
ダイアログ ボックスをモーダルで表示する方法を次のコード例に示します。
Dim frmAbout as New Form() ' Display frmAbout as a modal dialog frmAbout.ShowDialog()
//Display frmAbout as a modal dialog Form frmAbout = new Form(); frmAbout.ShowDialog();
//Display frmAbout as a modal dialog Form frmAbout = new Form(); frmAbout.ShowDialog();
Form ^ frmAbout = gcnew Form(); //Display frmAbout as a modal dialog frmAbout->ShowDialog();
ShowDialog メソッドには、フォームの親子関係を指定する owner というオプションの引数があります。たとえば、メイン フォームのコードを使用してダイアログ ボックスを開く場合、ダイアログ ボックスのオーナーとして Me (Visual Basic の場合) または this (Visual C# の場合) を渡すと、メイン フォームをオーナーに設定できます。コード例は次のとおりです。
Private Sub mnuAbout_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuAbout.Click Dim f As New Form() f.ShowDialog(Me) End Sub
private void mnuAbout_Click(object sender, System.EventArgs e) { Form f = new Form(); f.ShowDialog(this); }
private void mnuAbout_Click(System.Object sender, System.EventArgs e) { Form f = new Form(); f.ShowDialog(this); }
private: void mnuAbout_Click(System::Object ^ sender, System::EventArgs ^ e) { Form ^ f = gcnew Form(); f->ShowDialog(this); }
モードレス ダイアログ ボックスとしてフォームを表示するには
Show メソッドを呼び出します。
[バージョン情報] ダイアログ ボックスをモードレスで表示する方法の例は、次のとおりです。
Dim f As New Form() ' Display f as a modeless dialog. f.Show()
//Display f as a modeless dialog Form f= new Form(); f.Show();
//Display f as a modeless dialog Form f = new Form(); f.ShowDialog(this);
Form ^ f = gcnew Form(); //Display f as a modeless dialog f->Show();
メモ : フォームがモーダルで表示されている場合、ダイアログ ボックスを閉じるまで、ShowDialog メソッド以降のコードは実行されません。一方、フォームがモードレスで表示されている場合は、フォームが表示されるとすぐに Show メソッド以降のコードが実行されます。
参照
処理手順
方法 : 複数のプロパティを使用してダイアログ ボックス情報を個別に取得する
チュートリアル : オブジェクトによるダイアログ ボックス情報の一括取得