如何:顯示強制回應和非強制回應的 Windows Form
表單及對話方塊可以是強制回應或非強制回應的 (Modeless)。 您必須先關閉或隱藏「強制回應」(Modal) 表單或對話方塊,才能繼續執行應用程式的其他部分。 如需使用對話方塊的詳細資訊,請參閱使用者輸入到對話方塊。
顯示重要訊息的對話方塊應該都是強制回應的。 Visual Studio 中的 [關於] 對話方塊即是強制回應對話方塊的範例。 MessageBox 是您可以使用的強制回應表單。
「非強制回應」表單可讓您在表單之間移動焦點,而不需關閉初始表單。 即使表單處於顯示的狀態,使用者還是可以繼續在其他地方執行任何應用程式。
非強制回應表單的程式較難設計,因為使用者可以在無法預期的順序下進行存取。 無論使用者的動作為何,您都必須保持應用程式的狀態一致。 通常工具視窗是以非強制回應的形式顯示。 可從 Visual Studio 的 [編輯] 功能表存取的 [尋找] 對話方塊就是非強制回應對話方塊的範例之一。 請使用非強制回應表單來顯示常用命令或資訊。
注意事項 |
---|
根據您目前使用的設定或版本,您所看到的對話方塊與功能表指令可能會與 [說明] 中描述的不同。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定。 |
若要將表單以強制回應對話方塊顯示
呼叫 ShowDialog 方法。
下列程式碼範例中示範了如何強制顯示對話方塊。
Dim frmAbout as New Form() ' Display frmAbout as a modal dialog frmAbout.ShowDialog()
//Display frmAbout as a modal dialog Form frmAbout = new Form(); frmAbout.ShowDialog();
Form ^ frmAbout = gcnew Form(); //Display frmAbout as a modal dialog frmAbout->ShowDialog();
ShowDialog 方法中的選擇性引數 owner 可用來指定表單的父-子關係 (Parent-Child Relationship)。 例如,如果主要表單中的程式碼會顯示對話方塊,您可以傳遞 Me (在 Visual Basic 中) 或 this (在 Visual C# 中) 做為對話方塊的擁有人,如此可將您的主要表單建立為擁有人,如以下程式碼所示:
Private Sub mnuAbout_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles mnuAbout.Click Dim f As New Form() f.ShowDialog(Me) End Sub
private void mnuAbout_Click(object sender, System.EventArgs e) { Form f = new Form(); f.ShowDialog(this); }
private: void mnuAbout_Click(System::Object ^ sender, System::EventArgs ^ e) { Form ^ f = gcnew Form(); f->ShowDialog(this); }
若要將表單以非強制回應對話方塊顯示
呼叫 Show 方法。
以下範例會說明如何以非強制回應格式來顯示 [關於] 對話方塊。
Dim f As New Form() ' Display f as a modeless dialog. f.Show()
//Display f as a modeless dialog Form f= new Form(); f.Show();
Form ^ f = gcnew Form(); //Display f as a modeless dialog f->Show();
注意事項 如果表單是以強制回應方式顯示,則 ShowDialog 方法之後的程式碼在關閉對話方塊之前都不會執行。但是,如果表單是以非強制回應的方式顯示的話,那麼 Show 方法之後的程式碼會在顯示表單後立即執行。