Gewusst wie: Erstellen von untergeordneten MDI-Formularen

Aktualisiert: November 2007

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.

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 erstellen Sie untergeordnete MDI-Formulare

  1. 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.

  2. 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.

  3. 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.

    Hinweis:

    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.

  4. 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.

  5. Ziehen Sie ein RichTextBox-Steuerelement aus der Toolbox auf das Formular.

  6. 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.

  7. 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.

  8. 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.

    Hinweis:

    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"
    
  9. 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.

    Hinweis:

    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

Weitere Ressourcen

MDI-Anwendungen (Multiple Document Interface)