Dela via


Gör så här: Skapa MDI-underdokument

MDI-barnformulär är en viktig del av MDI-program (Multiple-Document Interface)eftersom dessa formulär utgör centrum för användarinteraktion.

I följande procedur använder du Visual Studio för att skapa ett underordnat MDI-formulär som visar en RichTextBox kontroll, ungefär som de flesta ordbearbetningsprogram. Genom att ersätta den System.Windows.Forms kontrollen med andra kontroller, till exempel DataGridView eller en blandning av kontroller, kan du skapa MDI-underordnade fönster (och i förlängningen MDI-program) med olika möjligheter.

Skapa underordnade MDI-formulär

  1. Skapa ett nytt Windows Forms-programprojekt i Visual Studio. I fönstret Egenskaper för formuläret anger du dess egenskap IsMdiContainer till true och dess egenskap WindowsState till Maximized.

    Detta anger formuläret som en MDI-container för barnfönster.

  2. Från Toolbox, dra en MenuStrip-kontroll till formuläret. Ange egenskapen Text till File.

  3. Klicka på ellipsen (...) bredvid egenskapen Objekt och klicka på Lägg till för att lägga till två underordnade menyalternativ för verktygslist. Ange egenskapen Text för dessa objekt till Ny och Fönster.

  4. I Solution Explorerhögerklickar du på projektet och väljer sedan Lägg till>nytt objekt.

  5. I dialogrutan Lägg till nytt objekt väljer du Windows-formulär (i Visual Basic eller i Visual C#) eller Windows Forms Application (.NET) (i Visual C++) i fönstret Mallar. I rutan Namn namnger du formuläret Form2. Välj Öppna för att lägga till formuläret i projektet.

    Obs

    MDI-underformuläret som du skapade i det här steget är ett standardformulär för Windows. Därför har den en Opacity egenskap som gör att du kan kontrollera formulärets transparens. Egenskapen Opacity har dock utformats för toppnivåfönster. Använd den inte med MDI-underordnade formulär, eftersom målningsproblem kan uppstå.

    Det här formuläret är mallen för dina underordnade MDI-formulär.

    Windows Forms Designer öppnas, och visar Form2.

  6. Från Toolbox-, dra en RichTextBox--kontroll till formuläret.

  7. I fönstret Egenskaper anger du egenskapen Anchor till Överst, Vänster och egenskapen Dock till Fyll.

    Detta gör att RichTextBox-kontrollen helt fyller området i det underordnade MDI-formuläret, även när formuläret ändrar storlek.

  8. Dubbelklicka på menyalternativet Ny för att skapa en Click händelsehanterare för den.

  9. Infoga kod som liknar följande för att skapa ett nytt underordnat MDI-formulär när användaren klickar på menyalternativet Nytt.

    Not

    I följande exempel hanterar händelsehanteraren händelsen Click för MenuItem2. Tänk på att beroende på detaljerna i din programarkitektur kanske menyalternativet New inte är 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();
       }
    

    Lägg till följande #include-direktiv överst i Form1.h i C++:

    #include "Form2.h"
    
  10. I listrutan överst i fönstret Egenskaper väljer du menyremsan som motsvarar menyremsan Arkiv och anger egenskapen MdiWindowListItem till window ToolStripMenuItem.

    På så sätt kan menyn Window behålla en lista över öppna MDI-underordnade fönster med en bockmarkering bredvid det aktiva underordnade fönstret.

  11. Tryck på F5 för att köra programmet. Genom att välja Ny från menyn Arkiv kan du skapa nya MDI-underordnade formulär som hålls reda på i menyalternativet Fönster.

    Not

    När ett underordnat MDI-formulär har en MainMenu komponent (med vanligtvis en menystruktur med menyobjekt) och det öppnas i ett överordnat MDI-formulär som har en MainMenu komponent (med vanligtvis en menystruktur med menyobjekt), sammanfogas menyobjekten automatiskt om du har angett egenskapen MergeType (och eventuellt egenskapen MergeOrder). Ange egenskapen MergeType för både komponenterna MainMenu och alla menyalternativen i det underordnade formuläret till MergeItems. Ange dessutom egenskapen MergeOrder så att menyalternativen från båda menyerna visas i önskad ordning. Tänk dessutom på att när du stänger ett överordnat MDI-formulär aktiverar var och en av de underordnade MDI-formulären en Closing-händelse innan händelsen Closing för det överordnade MDI-formuläret aktiveras. Om du avbryter en MDI-underordnad Closing-händelse kommer det inte att förhindra att MDI-förälderns Closing-händelse aktiveras. Men argumentet CancelEventArgs för MDI-förälderns Closing-händelse ställs nu in på true. Du kan tvinga MDI-huvudformuläret och alla MDI-underdokument att stängas genom att ställa in argumentet CancelEventArgs till false.

Se även