次の方法で共有


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

更新 : 2007 年 11 月

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

重要なメッセージを表示するダイアログ ボックスは、常にモーダルで表示する必要があります。Visual Studio の [バージョン情報] ダイアログ ボックスは、モーダル ダイアログ ボックスの一例です。MessageBox は使用できるモーダル フォームです。

"モードレス" なフォームの場合は、開いているフォームを閉じなくても、他のフォームとの間で自由にフォーカスを移動できます。ユーザーは、フォームを表示したまま、任意のアプリケーションで作業を継続できます。

モードレスなフォームは、ユーザーが任意の順番でアクセスできるため、プログラミングが複雑になります。ユーザーの操作内容にかかわらず、アプリケーションの状態が一定に保たれる必要があります。通常、ツール ウィンドウは、モードレスで表示されます。Visual Studio の [編集] メニューからアクセスできる [検索] ダイアログ ボックスは、モードレス ダイアログ ボックスの一例です。頻繁に使用するコマンドや情報を表示する場合は、モードレスなフォームを使用します。

39wcs2dh.alert_note(ja-jp,VS.90).gifメモ :

使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「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();
    
    39wcs2dh.alert_note(ja-jp,VS.90).gifメモ :

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

参照

処理手順

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

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

参照

Windows フォームの概要

その他の技術情報

新しい Windows フォームの作成

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