Gewusst wie: Anzeigen modaler und nicht modaler Windows Forms
Aktualisiert: November 2007
Formulare und Dialogfelder sind entweder modal oder nicht modal. Ein modales Formular- oder Dialogfeld muss geschlossen oder ausgeblendet werden, bevor Sie die Arbeit mit der Anwendung fortsetzen können. Weitere Informationen über das Arbeiten mit Dialogfeldern finden Sie unter Benutzereingaben in Dialogfelder.
Dialogfelder, die wichtige Meldungen anzeigen, sollten immer modal sein. Das Dialogfeld Info in Visual Studio ist ein Beispiel für ein modales Dialogfeld. MessageBox ist ein modales Formular, das Sie verwenden können.
Mithilfe von nicht modalen Formularen können Sie von einem Formularen zu einem anderen wechseln, ohne das erste Formular zuvor schließen zu müssen. Der Benutzer kann in einer anderen Anwendung arbeiten, während das Formular weiterhin angezeigt wird.
Nicht modale Formulare sind schwerer zu programmieren, da sie vom Benutzer in nicht vorhersehbarer Reihenfolge aufgerufen werden können. Der Zustand einer Anwendung muss bei allen Aktionen des Benutzers konsistent bleiben. Toolfenster werden häufig als nicht modale Fenster angezeigt. Das Dialogfeld Suchen im Menü Bearbeiten in Visual Studio ist ein Beispiel für ein nicht modales Dialogfeld. Nicht modale Formulare werden zur Anzeige häufig verwendeter Befehle oder Informationen verwendet.
Hinweis: |
---|
Je nach den aktiven Einstellungen oder der verwendeten Version können sich die angezeigten Dialogfelder und Menübefehle von den in der Hilfe beschriebenen unterscheiden. Klicken Sie im Menü Extras auf Einstellungen importieren und exportieren, um die Einstellungen zu ändern. Weitere Informationen hierzu finden Sie unter Visual Studio-Einstellungen. |
So zeigen Sie ein Formular als modales Dialogfeld an
Rufen Sie die ShowDialog-Methode auf.
Im folgenden Codebeispiel wird veranschaulicht, wie Sie ein Dialogfeld modal anzeigen.
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();
//Display frmAbout as a modal dialog Form frmAbout = new Form(); frmAbout.ShowDialog(); Form ^ frmAbout = gcnew Form(); //Display frmAbout as a modal dialog frmAbout->ShowDialog();
Die ShowDialog-Methode verfügt über das optionale Argument owner, mit dem eine Beziehung zwischen übergeordneten und untergeordneten Daten für ein Formular angegeben werden kann. Wenn ein Dialogfeld im Hauptformular beispielsweise codegesteuert angezeigt wird, können Sie als Besitzer des Dialogfelds Me (in Visual Basic) oder this (in Visual C#) übergeben, um das Hauptformular als "Besitzer" festzulegen. Siehe dazu folgendes Codebeispiel:
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 = new Form(); f.ShowDialog(this); } private: void mnuAbout_Click(System::Object ^ sender, System::EventArgs ^ e) { Form ^ f = gcnew Form(); f->ShowDialog(this); }
So zeigen Sie ein Formular als nicht modales Dialogfeld an
Rufen Sie die Show-Methode auf.
Im folgenden Beispiel wird veranschaulicht, wie Sie ein Dialogfeld Info im nicht modalen Format anzeigen.
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();
//Display f as a modeless dialog Form f = new Form(); f.ShowDialog(this); Form ^ f = gcnew Form(); //Display f as a modeless dialog f->Show();
Hinweis: Wenn ein Formular als modal angezeigt wird, wird der Code, der der ShowDialog-Methode folgt, erst nach dem Schließen des Dialogfelds ausgeführt. Wird das Formular jedoch nicht modal angezeigt, wird der auf die Show-Methode folgende Code gleichzeitig mit der Anzeige des Formulars ausgeführt.
Siehe auch
Aufgaben
Gewusst wie: Selektives Abrufen von Dialogfeldinformationen mithilfe mehrerer Eigenschaften
Exemplarische Vorgehensweise: Sammelabruf von Dialogfeldinformationen mithilfe von Objekten