方法 : Windows フォームをモーダルおよびモードレスで表示する

フォームおよびダイアログ ボックスは、モーダルまたはモードレスのいずれかで表示されます。 "モーダル" なフォームまたはダイアログ ボックスは、アプリケーションの他の作業に移行する前に、終了する (非表示にする) 必要があります。 ダイアログ ボックスの使用の詳細については、「ダイアログ ボックスへのユーザー入力」を参照してください。

重要なメッセージを表示するダイアログ ボックスは、常にモーダルで表示する必要があります。 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();
    
    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 = 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();
    
    Form ^ f = gcnew Form();
    //Display f as a modeless dialog
    f->Show();
    

    注意

    フォームがモーダルで表示されている場合、ダイアログ ボックスを閉じるまで、ShowDialog メソッド以降のコードは実行されません。一方、フォームがモードレスで表示されている場合は、フォームが表示されるとすぐに Show メソッド以降のコードが実行されます。

参照

処理手順

方法 : 複数のプロパティを使用してダイアログ ボックス情報を個別に取得する

チュートリアル : オブジェクトによるダイアログ ボックス情報の一括取得

関連項目

Windows フォームの概要

その他の技術情報

新しい Windows フォームの作成

Windows フォームのダイアログ ボックス