次の方法で共有


Form.ShowDialog メソッド ()

フォームをオーナー ウィンドウのないモーダル ダイアログ ボックスとして表示します。

Overloads Public Function ShowDialog() As DialogResult
[C#]
public DialogResult ShowDialog();
[C++]
public: DialogResult ShowDialog();
[JScript]
public function ShowDialog() : DialogResult;

戻り値

DialogResult 値の 1 つ。

例外

例外の種類 条件
Exception owner パラメータで指定されたフォームが、表示しようとしているフォームと同じです。

または

表示しようとしているフォームが既に表示されています。

または

表示しようとしているフォームが無効です。

または

表示しようとしているフォームがトップレベル ウィンドウではありません。

または

ダイアログ ボックスとして表示しようとしているフォームが既にモーダル フォームです。

解説

このメソッドを使用すると、アプリケーションでモーダル ダイアログ ボックスを表示できます。このメソッドが呼び出されると、次に続くコードは、ダイアログ ボックスが閉じるまで実行されません。このダイアログ ボックスに DialogResult 列挙体の値の 1 つを割り当てるには、フォーム上の ButtonDialogResult プロパティに値を割り当てるか、コードでフォームの DialogResult プロパティを設定します。その結果、指定した値がこのメソッドから返されます。この戻り値を使用して、ダイアログ ボックスで発生したアクションの処理方法を決定できます。たとえば、このメソッドを使用してダイアログ ボックスを閉じ、 DialogResult.Cancel 値を返すと、 ShowDialog を呼び出した後のコードを実行しないようにすることができます。

フォームがモーダル ダイアログ ボックスとして表示されている場合は、フォームを閉じるボタン (フォームの右上の "X" が付いているボタン) をクリックすると、そのフォームが非表示になり、 DialogResult プロパティが DialogResult.Cancel に設定されます。モードレス フォームとは異なり、ユーザーがダイアログ ボックスの閉じるボタンをクリックするか、 DialogResult プロパティの値を設定した場合には、 Close メソッドは .NET Framework によって呼び出されません。その場合はフォームが非表示になるだけで、ダイアログ ボックスの新しいインスタンスを作成しなくてもそのフォームを再表示できます。ダイアログ ボックスとして表示されているフォームは Close メソッドで閉じられることはないため、フォームがアプリケーションで不要になった場合は、そのフォームの Dispose メソッドを呼び出す必要があります。

この形式の ShowDialog メソッドは、所有者としてフォームやコントロールを指定しません。この形式のメソッドを呼び出すと、現在アクティブなウィンドウがダイアログ ボックスの所有者になります。特定の所有者を指定する場合は、このメソッドの他の形式を使用してください。

使用例

[Visual Basic, C#, C++] フォームをモーダル ダイアログ ボックスとして表示し、ダイアログ ボックスの戻り値を評価してその TextBox コントロールの値を取得するかどうかを判断する例を次に示します。この例は、 testDialog という名前の Form が作成され、そのフォームに TextBox1 という名前の TextBox コントロールが配置されていることを前提にしています。また、 testDialog をモーダル ダイアログ ボックスとして表示するために、この例のコードは別の Form に含まれていてそこから呼び出されることを想定しています。この例では、ダイアログ ボックスのオーナーを指定するバージョンの ShowDialog を使用します。

 
Public Sub ShowMyDialogBox()
    Dim testDialog As New Form2()
    
    ' Show testDialog as a modal dialog and determine if DialogResult = OK.
    If testDialog.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then
        ' Read the contents of testDialog's TextBox.
        txtResult.Text = testDialog.TextBox1.Text
    Else
        txtResult.Text = "Cancelled"
    End If
    testDialog.Dispose()
End Sub 'ShowMyDialogBox

[C#] 
public void ShowMyDialogBox()
{
   Form2 testDialog = new Form2();

   // Show testDialog as a modal dialog and determine if DialogResult = OK.
   if (testDialog.ShowDialog(this) == DialogResult.OK)
   {
      // Read the contents of testDialog's TextBox.
      this.txtResult.Text = testDialog.TextBox1.Text;
   }
   else
   {
      this.txtResult.Text = "Cancelled";
   }
   testDialog.Dispose();
}

[C++] 
public:
   void ShowMyDialogBox()
   {
      Form2* testDialog = new Form2();

      // Show testDialog as a modal dialog and determine if DialogResult = OK.
      if (testDialog->ShowDialog(this) == DialogResult::OK)
      {
         // Read the contents of testDialog's TextBox.
         this->txtResult->Text = testDialog->TextBox1->Text;
      }
      else
      {
         this->txtResult->Text = S"Cancelled";
      }
      testDialog->Dispose();
   }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

参照

Form クラス | Form メンバ | System.Windows.Forms 名前空間 | Form.ShowDialog オーバーロードの一覧 | DialogResult