Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Untergeordnete MDI-Formulare sind ein wesentliches Element von Multiple-Document-Schnittstellenanwendungen (MDI), da sie das Zentrum der Interaktion mit dem Benutzer bilden.
Im folgenden Verfahren verwenden Sie Visual Studio, um ein untergeordnetes MDI-Formular zu erstellen, das ein RichTextBox Steuerelement anzeigt, ähnlich wie die meisten Textverarbeitungsanwendungen. Indem Sie das System.Windows.Forms Steuerelement durch andere Steuerelemente ersetzen, z. B. das DataGridView Steuerelement oder eine Mischung aus Steuerelementen, können Sie untergeordnete MDI-Fenster (und durch Erweiterung, MDI-Anwendungen) mit unterschiedlichen Möglichkeiten erstellen.
Erstellen von MDI-Kindfenstern
Erstellen Sie ein neues Windows Forms-Anwendungsprojekt in Visual Studio. Legen Sie im Eigenschaftsfenster für das Formular die IsMdiContainer Eigenschaft auf
trueund seineWindowsStateEigenschaft aufMaximized.Dadurch wird das Formular als MDI-Container für untergeordnete Fenster definiert.
Ziehen Sie von
Toolboxein MenuStrip Steuerelement auf das Formular. Legen Sie dieTextEigenschaft auf "File" fest.Klicken Sie auf die Auslassungspunkte (...) neben der Items-Eigenschaft, und klicken Sie auf Hinzufügen, um zwei untergeordnete Toolstrip-Menüelemente hinzuzufügen. Legen Sie die
TextEigenschaft für diese Elemente auf "Neu" und "Fenster" fest.Klicken Sie mit der rechten Maustaste auf das Projekt im Projektmappen-Explorer, und wählen Sie dann "> hinzufügen" aus.
Wählen Sie im Dialogfeld "Neues Element hinzufügen" im Bereich "Vorlagen" die Option "Windows Form" (in Visual Basic oder in Visual C#) oder "Windows Forms Application (.NET)" (in Visual C++) aus. Benennen Sie im Feld "Name " das Formular "Formular2". Wählen Sie "Öffnen" aus, um das Formular zum Projekt hinzuzufügen.
Hinweis
Das untergeordnete MDI-Formular, das Sie in diesem Schritt erstellt haben, ist ein Windows-Standardformular. Daher verfügt sie über eine Opacity Eigenschaft, mit der Sie die Transparenz des Formulars steuern können. Die Opacity Eigenschaft wurde jedoch für Fenster der obersten Ebene entwickelt. Verwenden Sie sie nicht mit untergeordneten MDI-Formen, da Darstellungsprobleme auftreten können.
Dieses Formular ist die Vorlage für Ihre untergeordneten MDI-Formulare.
Der Windows Forms-Designer wird geöffnet und zeigt Form2 an.
Ziehen Sie aus der Toolbox ein RichTextBox-Steuerelement in das Formular.
Legen Sie im Eigenschaftenfenster die
AnchorEigenschaft auf "Oben", "Links" und dieDockEigenschaft auf " Fill" fest.Dies bewirkt, dass das RichTextBox Steuerelement den Bereich des MDI-Kindformulars komplett ausfüllt, auch wenn die Größe des Formulars geändert wird.
Doppelklicken Sie auf das Menüelement "Neu ", um einen Click Ereignishandler dafür zu erstellen.
Fügen Sie Code ähnlich wie folgt ein, um ein neues untergeordnetes MDI-Formular zu erstellen, wenn der Benutzer auf das Menüelement "Neu" klickt.
Hinweis
Im folgenden Beispiel behandelt der Ereignishandler das Click Ereignis für
MenuItem2. Seien Sie sich bewusst, dass je nach den Besonderheiten Ihrer Anwendungsarchitektur Ihr Menüpunkt „Neu“ möglicherweise nicht verfügbar istMenuItem2.Protected Sub MDIChildNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click Dim NewMDIChild As New Form2() 'Set the Parent Form of the Child window. NewMDIChild.MdiParent = Me 'Display the new form. NewMDIChild.Show() End Subprotected void MDIChildNew_Click(object sender, System.EventArgs e){ Form2 newMDIChild = new Form2(); // Set the Parent Form of the Child window. newMDIChild.MdiParent = this; // Display the new form. newMDIChild.Show(); }private: void menuItem2_Click(System::Object ^ sender, System::EventArgs ^ e) { Form2^ newMDIChild = gcnew Form2(); // Set the Parent Form of the Child window. newMDIChild->MdiParent = this; // Display the new form. newMDIChild->Show(); }Fügen Sie in C++ oben in Form1.h die folgende
#includeDirektive hinzu:#include "Form2.h"Wählen Sie in der Dropdownliste oben im Eigenschaftenfenster den Menüstreifen aus, der der Menüleiste " Datei " entspricht, und legen Sie die MdiWindowListItem Eigenschaft auf das Fenster ToolStripMenuItemfest.
Dadurch kann im Menü "Fenster" eine Liste geöffneter untergeordneter MDI-Fenster mit einem Häkchen neben dem aktiven untergeordneten Fenster verwaltet werden.
Drücken Sie F5 , um die Anwendung auszuführen. Wenn Sie im Menü "Datei" die Option "Neu" auswählen, können Sie neue untergeordnete MDI-Formulare erstellen, die im Menüelement "Fenster" nachverfolgt werden.
Hinweis
Wenn ein untergeordnetes MDI-Formular über eine MainMenu Komponente (in der Regel eine Menüstruktur von Menüelementen) verfügt und in einem übergeordneten MDI-Formular geöffnet wird, das über eine MainMenu Komponente verfügt (in der Regel eine Menüstruktur von Menüelementen), werden die Menüelemente automatisch zusammengeführt, wenn Sie die MergeType Eigenschaft (und optional die MergeOrder Eigenschaft) festgelegt haben. Legen Sie die MergeType Eigenschaft beider MainMenu Komponenten und aller Menüelemente des untergeordneten Formulars auf MergeItems. Legen Sie außerdem die MergeOrder Eigenschaft so fest, dass die Menüelemente aus beiden Menüs in der gewünschten Reihenfolge angezeigt werden. Denken Sie außerdem daran, dass beim Schließen eines übergeordneten MDI-Formulars jedes der untergeordneten MDI-Formulare ein Closing Ereignis auslöst, bevor das Closing Ereignis für das übergeordnete MDI-Formular ausgelöst wird. Das Abbrechen des Ereignisses Closing eines untergeordneten MDI-Elements verhindert nicht, dass das Ereignis des übergeordneten MDI-Elements Closing ausgelöst wird; jedoch wird das Argument für das Ereignis des übergeordneten MDI-Elements CancelEventArgs jetzt auf Closing festgelegt. Sie können erzwingen, dass das MDI-Übergeordnete Formular und alle MDI-Kindformulare geschlossen werden, indem Sie das CancelEventArgs-Argument auf
falsesetzen.
Siehe auch
.NET Desktop feedback