Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I moduli figlio MDI sono un elemento essenziale delle applicazioni MDI (Multiple-Document Interface), poiché questi moduli sono il centro dell'interazione dell'utente.
Nel procedimento che segue, utilizzerai Visual Studio per creare un form figlio MDI che visualizza un controllo RichTextBox, simile alla maggior parte delle applicazioni di elaborazione testi. Sostituendo il controllo System.Windows.Forms con altri controlli, ad esempio il controllo DataGridView o una combinazione di controlli, è possibile creare finestre figlio MDI (e, per estensione, applicazioni MDI) con diverse possibilità.
Creare moduli figlio MDI
Creare un nuovo progetto di applicazione Windows Form in Visual Studio. Nella finestra Proprietà per la maschera, imposta la proprietà IsMdiContainer su
true
e la proprietàWindowsState
suMaximized
.In questo modo il modulo viene designato come contenitore MDI per le finestre figlio.
Dalla
Toolbox
trascinare un controllo MenuStrip nel form. Impostare la relativa proprietàText
su File.Fare clic sui puntini (...) accanto alla proprietà Items e fare clic su Aggiungi per aggiungere due voci di menu della barra degli strumenti secondarie. Imposta la proprietà
Text
per questi elementi su Nuovo e Finestra.In Esplora Soluzioni , fare clic con il pulsante destro del mouse sul progetto e quindi selezionare Aggiungi>Nuovo Elemento.
Nella finestra di dialogo Aggiungi nuovo elemento, selezionare Windows Form (in Visual Basic o in Visual C#) o Windows Forms Application (.NET) (in Visual C++) dal riquadro Modelli. Nella casella Nome
assegnare al modulo il nome Form2 . Selezionare Apri per aggiungere il modulo al progetto.Annotazioni
Il modulo figlio MDI creato in questo passaggio è un normale Windows Form. Di conseguenza, fornisce una proprietà Opacity, che consente di controllare la trasparenza del modulo. Tuttavia, la proprietà Opacity è stata progettata per le finestre di primo livello. Non usarlo con moduli figlio MDI, perché possono verificarsi problemi di rendering.
Questo modulo sarà il modello per i moduli figlio MDI.
Verrà visualizzata
Progettazione Windows Form2, visualizzando Form2 .Dalla casella degli strumenti , trascinare un controllo RichTextBox nel modulo.
Nella finestra Proprietà, impostare la proprietà
Anchor
su Superiore, Sinistra e la proprietàDock
su Riempi.In questo modo il controllo RichTextBox riempie completamente l'area del modulo figlio MDI, anche quando il modulo viene ridimensionato.
Fare doppio clic sulla voce di menu Nuovo per creare un gestore eventi Click per esso.
Inserire codice simile al seguente per creare una nuova finestra figlia MDI quando l'utente fa clic sulla voce di menu Nuovo.
Annotazioni
Nell'esempio seguente 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 essereMenuItem2
.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
#include
seguente all'inizio di Form1.h:#include "Form2.h"
Nell'elenco a discesa nella parte superiore della finestra proprietà
selezionare la striscia di menu corrispondente alla striscia di menu menu e impostare la proprietà su Window . Ciò consente al menu Finestra di mantenere un elenco delle finestre figlie MDI aperte con un segno di spunta accanto alla finestra figlia attiva.
Premere F5 per eseguire l'applicazione. Selezionando Nuovo dal menu File, è possibile creare nuovi moduli figlio MDI, di cui si tiene traccia nella voce del menu Window.
Annotazioni
Quando un modulo figlio MDI ha un componente MainMenu (di solito con una struttura di voci di menu), e viene aperto all'interno di un modulo padre MDI con un componente MainMenu (anche questo, di solito, con una struttura di voci di menu), le voci di menu si uniscono automaticamente se è stata impostata la proprietà MergeType (e facoltativamente la proprietà MergeOrder). Impostare la proprietà MergeType di entrambi i componenti MainMenu e di tutte le voci di menu del modulo figlio su MergeItems. Impostare inoltre la proprietà MergeOrder in modo che le voci di menu di entrambi i menu vengano visualizzate nell'ordine desiderato. Tenere inoltre presente che quando si chiude un modulo padre MDI, ogni modulo figlio MDI genera un evento Closing prima che venga generato l'evento Closing per l'elemento padre MDI. L'annullamento dell'evento Closing di un figlio MDI non impedirà l'innalzamento dell'evento Closing del genitore MDI; tuttavia, l'argomento CancelEventArgs per l'evento Closing del genitore MDI verrà ora impostato su
true
. È possibile forzare la chiusura del form principale MDI e di tutti i form figlio MDI impostando l'argomento CancelEventArgs sufalse
.
Vedere anche
.NET Desktop feedback