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

當表單顯示為強制回應對話方塊時,按一下 [ 關閉 ] 按鈕 (表單右上角的 X 按鈕) 會導致表單隱藏,並將 DialogResult 屬性設定為 DialogResult.Cancel 。 不同于非強制回應表單, Close 當使用者按一下對話方塊的關閉表單按鈕或設定 屬性的值 DialogResult 時,.NET Framework不會呼叫 方法。 相反地,表單會隱藏,而且可以再次顯示,而不需建立對話方塊的新實例。 因為顯示為對話方塊的表單是隱藏的,而不是關閉的,所以當應用程式不再需要表單時,您必須呼叫 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 。 這個範例需要 Form 建立具名 Form2 的 ,而且它包含 TextBox 名為 的 TextBox1 控制項。 此範例會使用 指定對話方塊擁有者的 版本 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 ,方法是將它指派給 DialogResult 表單上的 屬性 Button ,或在程式碼中設定 DialogResult 表單的 屬性。 這個值接著會由這個方法傳回。 您可以使用這個傳回值來判斷如何處理對話方塊中發生的動作。 例如,如果對話方塊已關閉,並透過此方法傳 DialogResult.Cancel 回值,您可以防止在呼叫 ShowDialog 之後執行的程式碼。

當表單顯示為強制回應對話方塊時,按一下 [ 關閉 ] 按鈕 (表單右上角的 X 按鈕) 會導致表單隱藏,並將 DialogResult 屬性設定為 DialogResult.Cancel 。 不同于無模式表單,當使用者按一下對話方塊的關閉表單按鈕或設定 屬性的值 DialogResult 時, Close .NET Framework不會呼叫 方法。 相反地,表單會隱藏,而且可以再次顯示,而不需建立對話方塊的新實例。 因為顯示為對話方塊的表單是隱藏的,而不是關閉的,所以當應用程式不再需要表單時,您必須呼叫 Dispose 表單的 方法。

這個版本的 ShowDialog 方法可讓您指定將擁有所顯示對話方塊的特定表單。

另請參閱

適用於