Partager via


Comment créer des formulaires enfant MDI

Les formulaires enfants MDI constituent un élément essentiel des applications Multiple-Document Interface (MDI), 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 contrôle RichTextBox, similaire à la plupart des applications de traitement de texte. En remplaçant le contrôle System.Windows.Forms par d’autres contrôles, tels que le contrôle DataGridView 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 propriété sur et sa propriété sur .

    Cela désigne le formulaire en tant que conteneur MDI pour les fenêtres enfants.

  2. À partir du Toolbox, faites glisser un contrôle MenuStrip vers le formulaire. Définissez sa propriété Text sur fichier.

  3. Cliquez sur l'icône avec les trois points (...) à côté de la propriété Éléments, puis cliquez sur Ajouter pour ajouter deux sous-éléments de menu de la barre d’outils. Définissez la propriété Text pour ces éléments sur Nouvelle et Fenêtre.

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

    Note

    Le formulaire enfant MDI que vous avez créé à cette étape est un Windows Form standard. Par conséquent, il a une propriété Opacity, qui vous permet de contrôler la transparence du formulaire. Toutefois, la propriété Opacity a été conçue pour les fenêtres de niveau supérieur. Ne l’utilisez pas avec des formulaires enfants MDI, car des problèmes de peinture peuvent se produire.

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

    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 propriété Anchor sur Haut, Gauche et la propriété Dock sur Remplir.

    Cela entraîne que le contrôle RichTextBox remplisse complètement la zone du formulaire enfant MDI, même lorsque le formulaire est redimensionné.

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

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

    Note

    Dans l’exemple suivant, le gestionnaire d’événements gère l’événement Click pour MenuItem2. N’oubliez pas que, en fonction des 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 #include suivante 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 le bandeau de menu qui correspond au menu Fichier et définissez la propriété MdiWindowListItem sur Fenêtre ToolStripMenuItem.

    Cela permet au menu Fenêtre de conserver la liste des fenêtres enfants MDI ouvertes, avec une coche à côté 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

    Lorsqu’un formulaire enfant MDI a un composant MainMenu (avec généralement une structure de menu d’éléments de menu) et qu’il est ouvert dans un formulaire parent MDI qui a un composant MainMenu (avec généralement une structure de menus d’éléments de menu), les éléments de menu se fusionnent automatiquement si vous avez défini la propriété MergeType (et éventuellement, la propriété MergeOrder). Fixez la propriété MergeType des composants MainMenu et des éléments de menu du formulaire enfant à MergeItems. En outre, définissez la propriété MergeOrder afin que les éléments de menu des deux menus apparaissent dans l’ordre souhaité. En outre, gardez à l’esprit que lorsque vous fermez un formulaire parent MDI, chacun des formulaires enfants MDI déclenche un événement Closing avant que l’événement Closing pour le parent MDI soit lancé. L’annulation de l’événement de Closing d’un enfant MDI n’empêche pas l’événement de Closing du parent MDI d’être déclenché ; Toutefois, l’argument CancelEventArgs de l’événement de Closing du parent MDI est maintenant défini sur true. Vous pouvez forcer la fermeture du formulaire parent MDI et de tous les formulaires enfants MDI en définissant l’argument CancelEventArgs sur false.

Voir aussi