Form.ShowDialog 方法

定義

將表單顯示為強制回應對話方塊。

多載

ShowDialog()

將表單顯示為強制回應對話方塊。

ShowDialog(IWin32Window)

以指定的擁有人將表單顯示為強制回應對話方塊。

ShowDialog()

來源:
Form.cs
來源:
Form.cs
來源:
Form.cs

將表單顯示為強制回應對話方塊。

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

傳回

其中一個 DialogResult 值。

例外狀況

已經可以看到所顯示的表單。

-或-

已停用所顯示的表單。

-或-

所顯示的表單不是最上層視窗。

-或-

顯示為對話方塊的表單已是強制回應表單。

-或-

目前的處理序不在使用者互動模式下執行 (如需詳細資訊,請參閱 UserInteractive)。

範例

下列範例會在判斷是否讀取對話方塊表單上的控制項值之前,將表單顯示為強制回應對話方塊,並評估對話方塊的傳回值 TextBox 。 這個範例需要 Form 建立具名 testDialog 的 ,而且它包含 TextBox 名為 的 TextBox1 控制項。 此外,此範例需要包含此範例中的程式碼,並從不同的 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 ,方法是將它指派給 DialogResult 表單上的 屬性 Button ,或在程式碼中設定 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

ShowDialog(IWin32Window)

來源:
Form.cs
來源:
Form.cs
來源:
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 。 這個範例需要 Form 建立具名 Form2 的 ,而且它包含 TextBox 名為 的 TextBox1 控制項。 此範例會使用 指定對話方塊擁有者的 版本 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 ,方法是將它指派給 DialogResult 表單上的 屬性 Button ,或在程式碼中設定 DialogResult 表單的 屬性。 這個值接著會由這個方法傳回。 您可以使用這個傳回值來判斷如何處理對話方塊中發生的動作。 例如,如果對話方塊已關閉,並透過此方法傳 DialogResult.Cancel 回值,您可以防止在呼叫 ShowDialog 之後執行的程式碼。

當表單顯示為強制回應對話方塊時,按一下 [ 關閉 ] 按鈕 (表單右上角的 X 按鈕) 會導致表單隱藏,並將 DialogResult 屬性設定為 DialogResult.Cancel 。 不同于無模式表單,當使用者按一下對話方塊的關閉表單按鈕或設定 屬性的值 DialogResult 時, Close .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