Delen via


Hoe: MDI-kindformulieren maken

MDI-kindformulieren zijn een essentieel element van Multiple-Document Interface (MDI)-toepassingen, omdat deze formulieren de kern van de gebruikersinteractie vormen.

In de volgende procedure gebruikt u Visual Studio om een MDI-kindformulier te maken dat een RichTextBox-besturingselement weergeeft, vergelijkbaar met de meeste tekstverwerkingsprogramma's. Door het System.Windows.Forms besturingselement te vervangen door andere besturingselementen, zoals het DataGridView besturingselement of een combinatie van besturingselementen, kunt u MDI-onderliggende vensters (en door uitbreiding MDI-toepassingen) met diverse mogelijkheden maken.

MDI-kindformulieren maken

  1. Maak een nieuw Windows Forms-toepassingsproject in Visual Studio. Stel in het venster Eigenschappen voor het formulier de eigenschap IsMdiContainer in op true en de eigenschap WindowsState op Maximized.

    Hiermee wordt het formulier aangeduid als een MDI-container voor kindervensters.

  2. Sleep vanuit de Toolboxeen MenuStrip controle naar het formulier. Stel de eigenschap Text ervan in op File.

  3. Klik op het beletselteken (...) naast de eigenschap Items en klik op toevoegen om twee menu-items voor onderliggende hulpmiddelen toe te voegen. Stel de eigenschap Text voor deze items in op Nieuwe en Venster.

  4. Klik in Solution Explorer-met de rechtermuisknop op het project en selecteer >Nieuw item toevoegen.

  5. Selecteer in het dialoogvenster Nieuw item toevoegen het Windows-formulier (in Visual Basic of in Visual C#) of de Windows Forms Application (.NET) (in Visual C++) in het deelvenster Sjablonen. Geef in het vak Naam de naam Formulier2. Selecteer Open om het formulier toe te voegen aan het project.

    Notitie

    Het MDI-kindformulier dat u in deze stap hebt gemaakt, is een standaard Windows-formulier. Als zodanig heeft het een eigenschap Opacity, waarmee u de transparantie van het formulier kunt beheren. De eigenschap Opacity is echter ontworpen voor vensters op het hoogste niveau. Gebruik het niet met MDI-kindformulieren, omdat er weergaveproblemen kunnen optreden.

    Dit formulier is de sjabloon voor uw MDI-kindformulieren.

    De Windows Forms Designer wordt geopend, met Form2.

  6. Sleep vanuit de Toolboxeen RichTextBox controle naar het formulier.

  7. Stel in het venster Eigenschappen de eigenschap Anchor in op Boven, Links en de eigenschap Dock op Vullen.

    Dit zorgt ervoor dat het besturingselement RichTextBox het gebied van het MDI-kindformulier volledig vult, zelfs wanneer het formulier wordt herzien.

  8. Dubbelklik op het menu-item Nieuw om er een Click gebeurtenis-handler voor te maken.

  9. Voeg code in die lijkt op het volgende om een nieuw MDI-onderliggend formulier te maken wanneer de gebruiker op de menuopdracht Nieuw klikt.

    Notitie

    In het volgende voorbeeld verwerkt de eventhandler het Click event voor MenuItem2. Houd er rekening mee dat, afhankelijk van de specifieke kenmerken van uw toepassingsarchitectuur, het menu-item Nieuwe mogelijk niet is MenuItem2.

    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();
       }
    

    Voeg in C++de volgende #include instructie toe bovenaan Form1.h:

    #include "Form2.h"
    
  10. Selecteer in de vervolgkeuzelijst bovenaan het venster Eigenschappen de menustrook die overeenkomt met de menustrook Bestand en stel de eigenschap MdiWindowListItem in op het venster ToolStripMenuItem.

    Hierdoor kan het menu Venster een lijst met geopende MDI-onderliggende vensters onderhouden met een vinkje naast het actieve onderliggende venster.

  11. Druk op F5- om de toepassing uit te voeren. Als u Nieuw selecteert in het menu Bestand, kunt u nieuwe MDI-kindformulieren maken, die worden weergegeven in het menu-item Venster.

    Notitie

    Wanneer een MDI-kindvenster een MainMenu-component heeft (meestal met een menustructuur van menu's) en het wordt geopend in een MDI-hoofdvenster met een MainMenu-component (meestal met een menustructuur van menu's), worden de menu's automatisch samengevoegd als u de eigenschap MergeType hebt ingesteld (en eventueel de eigenschap MergeOrder). Stel zowel de eigenschap MergeType van de MainMenu-componenten als van alle menu-items van het onderliggende formulier in op MergeItems. Stel bovendien de eigenschap MergeOrder in, zodat de menu-items uit beide menu's in de gewenste volgorde worden weergegeven. Houd er bovendien rekening mee dat wanneer u een MDI-hoofdformulier sluit, elk van de MDI-kindformulieren een Closing-event genereert voordat de Closing-event voor het MDI-hoofdelement wordt gegenereerd. Als u de Closing gebeurtenis van een MDI-kind annuleert, wordt niet voorkomen dat de Closing gebeurtenis van de MDI-ouder wordt gegenereerd; het argument CancelEventArgs voor de Closing gebeurtenis van de MDI-ouder wordt nu echter ingesteld op true. U kunt afdwingen dat het MDI-hoofdvenster en alle MDI-onderliggende formulieren worden gesloten door het argument CancelEventArgs op falsein te stellen.

Zie ook