2011-09-06 16 views
8

Normalmente, i controlli vengono aggiunti ai moduli. Ma ho bisogno di fare una cosa opposta: aggiungi un'istanza di Form al controllo utente del contenitore.Aggiungi modulo a un UserControl - è possibile?

La ragione di questo è che ho bisogno di incorporare un'applicazione di terze parti nella mia. La conversione del modulo in un controllo utente non è fattibile a causa della complessità.

risposta

11

Ciò è possibile impostando la proprietà TopLevel del modulo su false. Che lo trasforma in una finestra figlio, quasi indistinguibile da un UserControl. Ecco un esempio di controllo utente con il codice richiesto:

public partial class UserControl1 : UserControl { 
    public UserControl1() { 
     InitializeComponent(); 
    } 
    public void EmbedForm(Form frm) { 
     frm.TopLevel = false; 
     frm.FormBorderStyle = FormBorderStyle.None; 
     frm.Visible = true; 
     frm.Dock = DockStyle.Fill; // optional 
     this.Controls.Add(frm); 
    } 
} 
+0

Questo funziona, grazie. Ho notato solo un inconveniente: la forma incorporata ha smesso di reagire al ridimensionamento, rimane fissa. Qualche idea su come risolvere questo problema? – SharpAffair

+0

Bene, è normale, i controlli incorporati non sono normalmente ridimensionabili dall'utente. Ancorare il controllo utente in basso e a destra in modo da ridimensionarlo insieme al modulo attivo, modificando la dimensione del modulo incorporato nel processo. –

+0

Sia la forma incorporata che il controllo utente hanno il Dock impostato su Fill. Il controllo si ridimensiona, ma la forma incorporata non lo fa. – SharpAffair

Problemi correlati