Share via


Procedura: Creare moduli figlio MDI

I moduli figlio MDI sono un elemento essenziale delle applicazioni MDI (Multiple-Document Interface), poiché questi moduli sono il centro dell'interazione dell'utente.

Nella procedura seguente si userà Visual Studio per creare un modulo figlio MDI che visualizza un RichTextBox controllo, simile alla maggior parte delle applicazioni di elaborazione delle parole. Sostituendo il System.Windows.Forms controllo con altri controlli, ad esempio il DataGridView controllo o una combinazione di controlli, è possibile creare finestre figlio MDI (e, per estensione, applicazioni MDI) con diverse possibilità.

Creare moduli figlio MDI

  1. Creare un nuovo progetto di applicazione Windows Form in Visual Studio. Nella finestra Proprietà della maschera impostare la relativa IsMdiContainer proprietà su true e la relativa WindowsState proprietà su Maximized.

    Il form viene così designato come contenitore MDI per le finestre figlio.

  2. Dalla Toolbox trascinare un controllo MenuStrip nel form. Impostarne la Text proprietà su File.

  3. Fare clic sui puntini di sospensione (...) accanto alla proprietà Items e fare clic su Aggiungi per aggiungere due voci di menu della barra degli strumenti figlio. Impostare la Text proprietà per questi elementi su Nuovo e Window.

  4. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e quindi selezionare Aggiungi>Nuovo elemento.

  5. Nella finestra di dialogo Aggiungi nuovo elemento selezionare Windows Form (in Visual Basic o in Visual C#) o Windows Form Applicazione (.NET) (in Visual C++) dal riquadro Modelli. Nella casella Nome assegnare al modulo il nome Form2. Selezionare Apri per aggiungere il modulo al progetto.

    Nota

    Il form figlio MDI creato in questo passaggio è un Windows Form standard. Dispone pertanto di una proprietà Opacity che consente di controllare la trasparenza del form. La proprietà Opacity, tuttavia, è stata progettata per le finestre di primo livello. Per evitare problemi di disegno, non usarla con i form figlio MDI.

    Il form costituirà il modello per i form figlio MDI.

    Verrà visualizzata la finestra di progettazione Windows Form, che visualizza Form2.

  6. Dalla casella degli strumenti trascinare un controllo RichTextBox nel form.

  7. Nella finestra Proprietà impostare la Anchor proprietà su Top, Left e la Dock proprietà su Fill.

    In questo modo il controllo RichTextBox riempirà completamente l'area del form figlio MDI, anche quando viene ridimensionato.

  8. Fare doppio clic sulla voce di menu Nuovo per creare un Click gestore eventi.

  9. Inserire codice simile al seguente per creare un nuovo modulo figlio MDI quando l'utente fa clic sulla voce di menu Nuovo .

    Nota

    Nell'esempio che segue il gestore eventi gestisce l'evento Click per MenuItem2. Tenere presente che, a seconda delle specifiche dell'architettura dell'applicazione, la voce di menu Nuovo potrebbe non essere 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();
       }
    

    In C++, aggiungere la direttiva seguente #include all'inizio di Form1.h:

    #include "Form2.h"
    
  10. Nell'elenco a discesa nella parte superiore della finestra Proprietà selezionare la striscia di menu corrispondente alla striscia di menu File e impostare la MdiWindowListItem proprietà su Window ToolStripMenuItem.

    Ciò consente al menu Finestra di mantenere un elenco di finestre figlio MDI aperte con un segno di spunta accanto alla finestra figlio attiva.

  11. Premere F5 per eseguire l'applicazione. Selezionando Nuovo dal menu File, è possibile creare nuovi moduli figlio MDI, che vengono mantenuti traccia nella voce di menu Finestra.

    Nota

    Quando un form figlio MDI con un componente MainMenu, associato in genere a una struttura di voci di menu, viene aperto all'interno di un form padre MDI dotato di un componente MainMenu, solitamente con struttura di voci di menu, le voci di menu vengono unite automaticamente se è stata impostata la proprietà MergeType ed eventualmente la proprietà MergeOrder. Impostare la proprietà MergeType sia per i componenti MainMenu che per tutte le voci di menu del form figlio su MergeItems. Impostare anche la proprietà MergeOrder in modo che le voci di entrambi i menu appaiano nell'ordine desiderato. Tenere presente inoltre che quando si chiude un form padre MDI, ciascun form figlio MDI genera un evento Closing prima che venga generato l'evento Closing per il padre MDI. L'annullamento di un evento Closing di un figlio MDI non impedisce la generazione dell'evento Closing del padre MDI, ma l'argomento CancelEventArgs per l'evento Closing del padre MDI verrà ora impostato su true. È possibile imporre la chiusura del form padre MDI e di tutti i form figlio MDI impostando l'argomento CancelEventArgs su false.

Vedi anche