Guide pratique pour créer des formulaires enfants MDI

Les formulaires enfants MDI sont un élément essentiel des applications MDI (Multiple-Document Interface), car ces formulaires constituent le centre d’interaction utilisateur.

Dans la procédure suivante, vous allez utiliser Visual Studio pour créer un formulaire enfant MDI qui affiche un RichTextBox contrôle, similaire à la plupart des applications de traitement de texte. En remplaçant le System.Windows.Forms contrôle par d’autres contrôles, tels que le DataGridView contrôle ou un mélange de contrôles, vous pouvez créer des fenêtres enfants MDI (et, par extension, des applications MDI) avec diverses possibilités.

Créer des formulaires enfants MDI

  1. Créez un projet d’application Windows Forms dans Visual Studio. Dans la fenêtre Propriétés du formulaire, définissez sa IsMdiContainer propriété true sur et sa WindowsState propriété Maximizedsur .

    Ainsi, vous désignez le formulaire comme le conteneur MDI des fenêtres enfants.

  2. Faites glisser un contrôle MenuStrip de la Toolbox vers le formulaire. Définissez sa Text propriété sur File.

  3. Cliquez sur les points de suspension (...) en regard de la propriété Éléments , puis cliquez sur Ajouter pour ajouter deux éléments de menu de bandes d’outils enfants. Définissez la Text propriété pour ces éléments sur New et Window.

  4. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis sélectionnez Ajouter>Nouvel élément.

  5. Dans la boîte de dialogue Ajouter un nouvel élément , sélectionnez Windows Form (en Visual Basic ou en Visual C#) ou Application Windows Forms (.NET) (en Visual C++) dans le volet Modèles . Dans la zone Nom , nommez le formulaire Form2. Sélectionnez Ouvrir pour ajouter le formulaire au projet.

    Remarque

    Le formulaire MDI enfant que vous avez créé lors de cette étape est un Windows Form standard. Il a donc une propriété Opacity, ce qui vous permet de contrôler la transparence du formulaire. Cependant, la propriété Opacity a été conçue pour les fenêtres de niveau supérieur. Ne l'utilisez pas avec des formulaires MDI enfants, car des problèmes de peinture peuvent survenir.

    Ce formulaire sera le modèle pour vos formulaires MDI enfants.

    Le Concepteur Windows Forms s’ouvre , affichant Form2.

  6. À partir de la boîte à outils, faites glisser un contrôle RichTextBox vers le formulaire.

  7. Dans la fenêtre Propriétés , définissez la Anchor propriété sur Top, Left et la Dock propriété sur Fill.

    Ainsi, le contrôle RichTextBox remplit complètement la zone de formulaire MDI enfant, même quand le formulaire est redimensionné.

  8. Double-cliquez sur l’élément de menu Nouveau pour créer un gestionnaire d’événements Click pour celui-ci.

  9. Insérez du code similaire à ce qui suit pour créer un formulaire enfant MDI lorsque l’utilisateur clique sur l’élément de menu Nouveau .

    Remarque

    Dans l'exemple suivant, le gestionnaire d'événements gère l'événement Click pour MenuItem2. N’oubliez pas que, selon les spécificités de votre architecture d’application, votre nouvel élément de menu peut ne pas être 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();
       }
    

    En C++, ajoutez la directive suivante #include en haut de Form1.h :

    #include "Form2.h"
    
  10. Dans la liste déroulante située en haut de la fenêtre Propriétés, sélectionnez la bande de menus correspondant à la bande de menus Fichier et définissez la MdiWindowListItem propriété sur la fenêtreToolStripMenuItem.

    Cela permet au menu Fenêtre de conserver une liste de fenêtres enfants MDI ouvertes avec une marque case activée en regard de la fenêtre enfant active.

  11. Appuyez sur F5 pour exécuter l'application. En sélectionnant Nouveau dans le menu Fichier , vous pouvez créer de nouveaux formulaires enfants MDI, qui sont suivis dans l’élément de menu Fenêtre .

    Remarque

    Quand un formulaire MDI enfant a un composant MainMenu (avec, généralement, une structure d'éléments de menu) et qu'il est ouvert dans un formulaire MDI parent qui a un composant MainMenu (avec, généralement, une structure d'éléments de menu), les éléments de menu fusionnent automatiquement si vous avez défini la propriété MergeType (et, éventuellement, la propriété MergeOrder). Affectez la valeur MergeItems à la propriété MergeType des deux composants MainMenu et à tous les éléments de menu du formulaire enfant. Définissez aussi la propriété MergeOrder pour que les éléments de menu des deux menus apparaissent dans l'ordre souhaité. De plus, sachez que quand vous fermez un formulaire MDI parent, chaque formulaire MDI enfant déclenche un événement Closing avant que l'événement Closing pour le parent MDI soit déclenché. L’annulation de l’événement Closing d’un enfant MDI n’empêchera pas le déclenchement de l’événement Closing du MDI parent. Toutefois, l’argument CancelEventArgs pour l’événement Closing du MDI parent prendra la valeur true. Vous pouvez forcer la fermeture du MDI parent et de tous les formulaires MDI enfants en affectant la valeur false à l'argument CancelEventArgs.

Voir aussi