2009-08-29 13 views

risposta

18

Se non si utilizza MDI, è comunque possibile aggiungere un modulo a un altro modulo o a un pannello in un modulo.

public Form1() 
{ 
    InitializeComponent(); 

    Form2 embeddedForm = new Form2(); 
    embeddedForm.TopLevel = false; 
    Controls.Add(embeddedForm); 
    embeddedForm.Show(); 
} 

Sarà necessario impostare il FormBorderStyle-None, a meno che non si desidera avere una forma mobile reale all'interno del modulo.

Se si desidera eseguire questa operazione per creare un "modello" riutilizzabile da utilizzare in più moduli, è consigliabile prendere in considerazione la creazione di un controllo utente. Da non confondere con un controllo personalizzato, che è destinato a quando è necessario eseguire il proprio disegno anziché utilizzare le raccolte di controlli standard di Windows.

Non sono del tutto sicuro di quali siano le tue intenzioni, ma MDI (come menzionato in una delle altre risposte) potrebbe effettivamente essere quello che stai cercando.

+0

qual è la differenza se io uso il tuo metodo o la risposta nel seguente metodo – Moon

+0

cosa succede se voglio mettere questo modulo in qualche pannello del genitore MDI – Moon

+0

L'ho fatto tutto il giorno a Delphi dato che non avevamo il controllo dell'utente. Sto usando User Controls ora giorni in C# dal momento che sembra essere sostanzialmente equivalente. In questo modo, vengono attivati ​​sia la forma principale sia gli eventi Form_Load incorporati? – Steve

1
Form1 fChild = new Form1(); 
fChild.MdiParent = this; 
fChild.Show(); 

E la IsMDIContainer del genitore deve essere impostata su true.

Per un tutorial completo, è possibile fare riferimento a: Introduction to MDI Forms with C# @ CodeProject.

+0

cosa succede se voglio mettere questo modulo in qualche pannello del genitore MDI – Moon

4

Si dovrebbe:

1) Scegliere per MDI, che significa accettare lo stile completo MDI per la vostra interfaccia grafica

o

2) Non form includono a tutti, è meglio (e più facile) usare UserControls. Provali prima di fare una scelta. Se usi Forms, assicurati che i tasti di scelta rapida, ecc. Funzionino come vuoi tu.

Breve introduzione: si progetta un controllo utente come un modulo e lo si posiziona su un modulo come qualsiasi altro controllo.

+1

UserControls sono un metodo fantastico per incoraggiare il riutilizzo del codice quando MDI è eccessivo o altrimenti non è un design accettabile per il modulo. –

0

Mi sono imbattuto in questo thread precedente cercando qualcosa di simile. Nel caso in cui qualcuno stia cercando - ho usato Aggiungi nuovo elemento> Windows Form> Modulo ereditato. Ti consente di scegliere un modulo da incorporare come punto di partenza per un altro modulo. Questo era in VS 2015 Community Edition.

+0

** Chiarimento **: questo non * include * un modulo, è ** sottoclasse ** un modulo. Può essere utile per situazioni semplici. In particolare, potresti essere in grado di utilizzare ** docking ** per collegare più controlli a qualsiasi/tutti i 4 lati del modulo originale - SE non sta già utilizzando l'attracco.In caso contrario, penso che tutto ciò che si potrebbe fare è di estendere la larghezza e l'altezza e iniziare ad aggiungere controlli a destra e in fondo ai controlli del modulo genitore. Il problema è che se la forma genitore cambia, in modo tale che la larghezza e l'altezza necessarie cambiano, potrebbe essere difficile spostare tutto nella sottoclasse. – ToolmakerSteve