Form.ShowDialog 方法

定义

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

重载

ShowDialog()

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

ShowDialog(IWin32Window)

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

ShowDialog()

Source:
Form.cs
Source:
Form.cs
Source:
Form.cs

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

C#
public System.Windows.Forms.DialogResult ShowDialog();

返回

DialogResult 值之一。

例外

要显示的窗体已经可见。

- 或 -

所显示窗体被禁用。

- 或 -

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

- 或 -

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

- 或 -

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

示例

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

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

注解

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

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

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

另请参阅

适用于

.NET Framework 4.8.1 和其他版本
产品 版本
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

ShowDialog(IWin32Window)

Source:
Form.cs
Source:
Form.cs
Source:
Form.cs

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

C#
public System.Windows.Forms.DialogResult ShowDialog(System.Windows.Forms.IWin32Window owner);
C#
public System.Windows.Forms.DialogResult ShowDialog(System.Windows.Forms.IWin32Window? owner);

参数

owner
IWin32Window

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

返回

DialogResult 值之一。

例外

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

要显示的窗体已经可见。

- 或 -

所显示窗体被禁用。

- 或 -

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

- 或 -

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

- 或 -

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

示例

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

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

注解

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

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

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

另请参阅

适用于

.NET Framework 4.8.1 和其他版本
产品 版本
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10