Form.ShowDialog 方法

定义

将窗体显示为模式对话框。

重载

ShowDialog()

将窗体显示为模式对话框。

ShowDialog(IWin32Window)

将窗体显示为具有指定所有者的模式对话框。

ShowDialog()

将窗体显示为模式对话框。

public:
 System::Windows::Forms::DialogResult ShowDialog();
public System.Windows.Forms.DialogResult ShowDialog ();
member this.ShowDialog : unit -> System.Windows.Forms.DialogResult
Public Function ShowDialog () As DialogResult

返回

DialogResult 值之一。

例外

要显示的窗体已经可见。

- 或 -

所显示窗体被禁用。

- 或 -

显示的窗体不是顶级窗口。

- 或 -

显示为对话框的窗体已经是模式窗体。

- 或 -

当前进程不是以用户交互模式运行的(有关更多信息,请参见 UserInteractive)。

示例

以下示例将窗体显示为模式对话框,并在确定是否读取对话框窗体上的控件的值之前计算对话框的 TextBox 返回值。 此示例要求创建一testDialog个名为 Form 且包含名为 TextBoxTextBox1控件。 此外,该示例要求包含此示例中的代码,并从不同的 Form 调用,以便显示为 testDialog 模式对话框。 该示例使用 指定对话框所有者的 的版本 ShowDialog

void ShowMyDialogBox()
{
   Form2^ testDialog = gcnew 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";
   }

   delete testDialog;
}
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();
}
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

注解

可以使用此方法在应用程序中显示模式对话框。 调用此方法时,只有在对话框关闭之后,它后面的代码才会执行。 通过将对话框分配给窗体上的 属性或在代码中设置DialogResult窗体的 属性Button,可以为对话框分配DialogResult枚举DialogResult的值之一。 然后,此方法将返回此值。 可以使用此返回值来确定如何处理对话框中发生的操作。 例如,如果对话框已关闭并通过此方法返回 DialogResult.Cancel 值,则可以阻止调用 ShowDialog 后的代码执行。

当窗体显示为模式对话框时,单击“ 关闭 ”按钮 (窗体右上角带有 X 的按钮) 会导致隐藏窗体,并将 DialogResult 属性设置为 DialogResult.Cancel。 与非模式窗体不同,当用户单击对话框的Close“关闭窗体”按钮或设置 属性的值时,.NET Framework不会调用 方法DialogResult。 相反,窗体是隐藏的,无需创建新对话框实例即可再次显示。 由于显示为对话框的窗体是隐藏的,而不是关闭的,因此当应用程序不再需要窗体时,必须调用 Dispose 窗体的 方法。

此方法的 ShowDialog 此版本不指定窗体或控件作为其所有者。 调用此版本时,当前活动窗口将成为对话框的所有者。 如果要指定特定所有者,请使用此方法的其他版本。

另请参阅

适用于

ShowDialog(IWin32Window)

将窗体显示为具有指定所有者的模式对话框。

public:
 System::Windows::Forms::DialogResult ShowDialog(System::Windows::Forms::IWin32Window ^ owner);
public System.Windows.Forms.DialogResult ShowDialog (System.Windows.Forms.IWin32Window owner);
public System.Windows.Forms.DialogResult ShowDialog (System.Windows.Forms.IWin32Window? owner);
member this.ShowDialog : System.Windows.Forms.IWin32Window -> System.Windows.Forms.DialogResult
Public Function ShowDialog (owner As IWin32Window) As DialogResult

参数

owner
IWin32Window

任何实现 IWin32Window(表示将拥有模式对话框的顶级窗口)的对象。

返回

DialogResult 值之一。

例外

owner 参数中指定的窗体就是显示的窗体。

要显示的窗体已经可见。

- 或 -

所显示窗体被禁用。

- 或 -

显示的窗体不是顶级窗口。

- 或 -

显示为对话框的窗体已经是模式窗体。

- 或 -

当前进程不是以用户交互模式运行的(有关更多信息,请参见 UserInteractive)。

示例

以下示例将窗体显示为模式对话框,并在确定是否读取对话框窗体上的控件的值之前计算对话框的 TextBox 返回值。 此示例要求创建一Form2个名为 Form 且包含名为 TextBoxTextBox1控件。 该示例使用 指定对话框所有者的 的版本 ShowDialog

void ShowMyDialogBox()
{
   Form2^ testDialog = gcnew 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";
   }

   delete testDialog;
}
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();
}
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

注解

可以使用此方法在应用程序中显示模式对话框。 调用此方法时,只有在对话框关闭之后,它后面的代码才会执行。 通过将对话框分配给窗体上的 属性或在代码中设置DialogResult窗体的 属性Button,可以为其DialogResult分配一个值DialogResult。 然后,此方法将返回此值。 可以使用此返回值来确定如何处理对话框中发生的操作。 例如,如果对话框已关闭并通过此方法返回 DialogResult.Cancel 值,则可以阻止调用 ShowDialog 后的代码执行。

当窗体显示为模式对话框时,单击“ 关闭 ”按钮 (窗体右上角带有 X 的按钮) 会导致隐藏窗体,并将 DialogResult 属性设置为 DialogResult.Cancel。 与无模式窗体不同,Close当用户单击对话框的“关闭窗体”按钮或设置 属性的值DialogResult时,.NET Framework不会调用 方法。 相反,窗体是隐藏的,无需创建新对话框实例即可再次显示。 由于显示为对话框的窗体是隐藏的,而不是关闭的,因此当应用程序不再需要窗体时,必须调用 Dispose 窗体的 方法。

此方法的 ShowDialog 此版本允许您指定将拥有所显示对话框的特定窗体。

另请参阅

适用于