Form.ShowDialog 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將表單顯示為強制回應對話方塊。
多載
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 方法可讓您指定將擁有所顯示對話方塊的特定表單。