Condividi tramite


Procedura: creare form figlio MDI

Aggiornamento: novembre 2007

I form figlio MDI sono un elemento fondamentale di Applicazioni MDI (Interfaccia a documenti multipli, Multiple-Document Interface) in quanto costituiscono il fulcro dell'interazione dell'utente.

Nella procedura che segue vengono creati form figlio MDI che visualizzano un controllo RichTextBox, analogo alla maggior parte delle applicazioni per l'elaborazione di testi. Sostituendo il controllo System.Windows.Forms con altri controlli, ad esempio con DataGridView o con più controlli, è possibile creare finestre figlio MDI e applicazioni MDI con differenti possibilità.

Nota:

Le finestre di dialogo e i comandi di menu visualizzati potrebbero non corrispondere a quelli descritti nella Guida in linea in quanto dipendono dall'edizione o dalle impostazioni attive. Per modificare le impostazioni, scegliere Importa/Esporta impostazioni dal menu Strumenti. Per ulteriori informazioni, vedere Impostazioni di Visual Studio.

Per creare form figlio MDI

  1. Creare un form padre MDI con una struttura di menu contenente le voci di menu di primo livello File e Finestra e le voci di menu Nuovo e Chiudi. Per ulteriori informazioni sulla creazione di form padre MDI, vedere Procedura: creare form padre MDI.

  2. Dall'elenco a discesa nella parte superiore della finestra Proprietà selezionare la voce di menu corrispondente alla voce di menu &Finestra e impostare la proprietà MdiList su true.

    In tal modo nel menu Finestra verrà visualizzato un elenco di finestre figlio MDI aperte, con un segno di spunta accanto alla finestra figlio attiva.

  3. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto, scegliere Aggiungi quindi fare clic su Aggiungi nuovo elemento.

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

    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 livello superiore. Non utilizzarla con form figlio MDI per evitare problemi di disegno.

  4. Nella finestra di dialogo Aggiungi nuovo elemento selezionare Windows Form (in Visual Basic o in Visual C#) oppure Applicazione Windows Form (.NET) (in Visual C++) dal riquadro Modelli. Nella casella Nome attribuire al form il nome Form2. Fare clic sul pulsante Apri per aggiungere il form al progetto.

    Verrà aperta Progettazione Windows Form che include Form2.

  5. Trascinare un controllo RichTextBox dalla Casella degli strumenti al form.

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

    Ciò consente al controllo RichTextBox di riempire completamente l'area del form figlio MDI, dopo che è stato ridimensionato.

  7. Creare un gestore di eventi Click per la voce di menu Nuovo. Per ulteriori informazioni sulla creazione di gestori eventi, vedere Procedura: creare le impostazioni delle applicazioni utilizzando la finestra di progettazione.

  8. Inserire codice analogo a quello riportato di seguito per creare un form figlio MDI nuovo 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, in base alle caratteristiche specifiche dell'architettura dell'applicazione sviluppata, 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 Visual C++ aggiungere la seguente direttiva #include all'inizio del Form1.h:

    #include "Form2.h"
    
  9. Premere F5 per eseguire l'applicazione. Scegliendo Nuovo dal menu File si possono creare nuovi form figlio MDI di cui viene tenuta traccia nel 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 menu 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.

Vedere anche

Attività

Procedura: creare form padre MDI

Procedura: determinare il figlio MDI attivo

Procedura: inviare dati al figlio MDI attivo

Procedura: disporre i form figlio MDI

Altre risorse

Applicazioni MDI (Interfaccia a documenti multipli, Multiple-Document Interface)