次の方法で共有


Form.ShowDialog メソッド (IWin32Window)

指定した所有者を持つモーダル ダイアログとしてフォームを表示します。

Overloads Public Function ShowDialog( _
   ByVal owner As IWin32Window _) As DialogResult
[C#]
public DialogResult ShowDialog(IWin32Windowowner);
[C++]
public: DialogResult ShowDialog(IWin32Window* owner);
[JScript]
public function ShowDialog(
   owner : IWin32Window) : DialogResult;

パラメータ

  • owner
    モーダル ダイアログを所有するトップレベル ウィンドウを表す IWin32Window を実装しているオブジェクト。

戻り値

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 コントロールの値を取得するかどうかを判断する例を次に示します。この例は、 Form2 という名前の Form が作成され、そのフォームに TextBox1 という名前の TextBox コントロールが配置されていることを前提にしています。この例では、ダイアログ ボックスのオーナーを指定するバージョンの 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 ファミリ

参照

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