Gewusst wie: Erstellen von untergeordneten MDI-Formularen
Wichtig
Dieses Thema verwendet das MainMenu-Steuerelement, das durch das MenuStrip-Steuerelement ersetzt wurde. Das MainMenu-Steuerelement wird jedoch sowohl für die zukünftige Verwendung als auch aus Gründen der Abwärtskompatibilität beibehalten. Informationen zum Erstellen eines Übergeordneten MDI-Formulars mit einem MenuStrip finden Sie unter Gewusst wie: Erstellen einer MDI-Fensterliste mithilfe von MenuStrip (Windows Forms).
Untergeordnete MDI-Formulare sind ein wesentliches Element von MDI-Anwendungen (Multiple Document Interface), da diese Formulare im Mittelpunkt der Benutzerinteraktion stehen.
In dem folgenden Verfahren erstellen Sie untergeordnete MDI-Formulare mit einem RichTextBox-Steuerelement so, wie Sie es von den meisten Textverarbeitungsprogrammen kennen. Indem Sie das System.Windows.Forms-Steuerelement durch andere Steuerelemente ersetzen, z. B. durch das DataGridView-Steuerelement oder eine Kombination von Steuerelementen, erhalten Sie untergeordnete MDI-Fenster (bzw. nach entsprechender Erweiterung auch MDI-Anwendungen), die Ihnen vielfältige Möglichkeiten eröffnen.
Tipp
Je nach den aktiven Einstellungen oder der Version unterscheiden sich die Dialogfelder und Menübefehle auf Ihrem Bildschirm möglicherweise von den in der Hilfe beschriebenen. Klicken Sie im Menü Extras auf Einstellungen importieren und exportieren, um die Einstellungen zu ändern. Weitere Informationen hierzu finden Sie unter Arbeiten mit Einstellungen.
So erstellen Sie untergeordnete MDI-Formulare
Erstellen Sie ein übergeordnetes MDI-Formular mit einer Menüstruktur, die die Hauptebenen-Menüelemente Datei und Fenster sowie die Menüelemente Neu und Schließen umfasst. Weitere Informationen über das Erstellen von übergeordneten MDI-Formularen finden Sie unter Gewusst wie: Erstellen von übergeordneten MDI-Formularen.
Wählen Sie im oberen Bereich des Eigenschaftenfensters aus der Dropdownliste das Menüelement aus, das dem Menüelement &Fenster entspricht, und legen Sie für die MdiList-Eigenschaft den Wert true fest.
Das Menü Fenster ist somit in der Lage, eine Liste der geöffneten untergeordneten MDI-Fenster zu verwalten. Dazu wird neben dem aktiven untergeordneten Fenster ein Häkchen angezeigt.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, klicken Sie auf Hinzufügen und anschließend auf Neues Element hinzufügen.
Dieses Formular wird als Vorlage für untergeordnete MDI-Formulare verwendet.
Tipp
Das in diesem Schritt erstellte untergeordnete MDI-Formular ist ein Standard-Windows Form. Als solches verfügt es über eine Opacity-Eigenschaft, mit der Sie die Transparenz von Formularen steuern können. Allerdings ist die Opacity-Eigenschaft für Fenster der obersten Ebene konzipiert. Sie sollte daher nicht für untergeordnete MDI-Formulare verwendet werden, da beim Zeichnen Probleme auftreten könnten.
Wählen Sie im Dialogfeld Neues Element hinzufügen die Option Windows Form (in Visual Basic oder in Visual C#) oder Windows Forms-Anwendung (.NET) (in Visual C++) im Bereich Vorlagen aus. Geben Sie im Feld Name den Namen Form2 für das Formular ein. Klicken Sie auf die Schaltfläche Öffnen, um dem Projekt das Formular hinzuzufügen.
Der Windows Forms-Designer wird mit dem Formular Form2 geöffnet.
Ziehen Sie ein RichTextBox-Steuerelement aus der Toolbox auf das Formular.
Legen Sie die Anchor-Eigenschaft im Eigenschaftenfenster auf Top, Left und die Dock-Eigenschaft auf Fill fest.
Dadurch wird der Bereich des untergeordneten MDI-Formulars vom RichTextBox-Steuerelement vollständig ausgefüllt, auch wenn die Größe des Formulars geändert wird.
Erstellen Sie für das Menüelement Neu einen Click-Ereignishandler. Weitere Informationen zum Erstellen von Ereignishandlern finden Sie unter Gewusst wie: Erstellen von Ereignishandlern mithilfe des Designers.
Fügen Sie ähnlichen Code wie im folgenden Beispiele ein, um ein neues untergeordnetes MDI-Formular zu erstellen, wenn der Benutzer auf das Menüelement Neu klickt.
Tipp
Im folgenden Beispiel behandelt der Ereignishandler das Click-Ereignis für MenuItem2. Beachten Sie, dass das Menüelement Neu abhängig von den Gegebenheiten der Anwendungsarchitektur möglicherweise nicht MenuItem2 lautet.
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 Sub
protected 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 Visual C++ die folgende #include-Direktive an den Anfang von Form1.h ein:
#include "Form2.h"
Drucken Sie F5, um die Anwendung auszuführen. Mit der Option Neu aus dem Menü Datei können Sie neue untergeordnete MDI-Formulare erstellen, die im Menü Fenster aufgelistet werden.
Tipp
Wenn ein untergeordnetes MDI-Formular über eine MainMenu-Komponente (für gewöhnlich mit einer Menüstruktur aus Menüelementen) verfügt und in einem übergeordneten MDI-Formular geöffnet wird, das über eine MainMenu-Komponente (für gewöhnlich mit einer Menüstruktur aus Menüelementen) verfügt, werden die Menüelemente automatisch zusammengeführt, sofern Sie die MergeType-Eigenschaft festgelegt haben (und optional die MergeOrder-Eigenschaft). Legen Sie die MergeType-Eigenschaft beider MainMenu-Komponenten sowie alle Menüelemente des untergeordneten Formulars auf MergeItems fest. Zusätzlich können Sie die MergeOrder-Eigenschaft festlegen, sodass die Menüelemente beider Menüs in der gewünschten Reihenfolge angezeigt werden. Beachten Sie außerdem, dass beim Schließen eines übergeordneten MDI-Formulars alle untergeordneten MDI-Formulare ein Closing-Ereignis auslösen, bevor das Closing-Ereignis für das übergeordnete MDI-Formular ausgelöst wird. Durch Abbrechen des Closing-Ereignisses des untergeordneten MDI-Formulars wird nicht verhindert, dass das Closing-Ereignis des übergeordneten MDI-Formulars ausgelöst wird. Das CancelEventArgs-Argument für das Closing-Ereignis des übergeordneten MDI-Formulars ist in diesem Fall auf true festgelegt. Sie können das übergeordnete MDI-Formular und alle untergeordneten MDI-Formulare schließen, indem Sie für das CancelEventArgs-Argument den Wert false festlegen.
Siehe auch
Aufgaben
Gewusst wie: Erstellen von übergeordneten MDI-Formularen
Gewusst wie: Bestimmen des aktiven untergeordneten MDI-Elements
Gewusst wie: Senden von Daten an das aktive untergeordnete MDI-Element
Gewusst wie: Anordnen von untergeordneten MDI-Formularen