2010-11-21 8 views
13

In WinForms, come posso creare un UserControl che quando inserisco il mio modulo posso quindi aggiungere altri controlli all'interno trascinandoli dalla casella degli strumenti, allo stesso modo di tutti i controlli dei contenitori (pannelli, caselle di gruppo, ecc.)? Ho provato ad aggiungere controlli facendoli cadere nel mio controllo, ma poi quando sposto il mio controllo i controlli che ho aggiunto rimangono esattamente dove sono, cosa che non succederebbe se al posto del mio controllo usassi uno Panel (gli altri controlli sarebbero spostati con il pannello).Come creare un controllo utente in cui è possibile rilasciare altri controlli al suo interno?

+0

WinForms o WPF? –

+0

WinForms ........ – Juan

risposta

20

A differenza del controllo Panel, ad esempio, un UserControl non funge da controllo contenitore una volta posizionato su un altro modulo. È disponibile un supporto completo in fase di progettazione durante la progettazione dello stesso UserControl, ma il suo comportamento predefinito non gli consente di agire come controllo costitutivo dopo che è stato inserito in un altro modulo. Questo è il motivo per cui non è possibile aggiungere altri controlli ad esso trascinandoli dalla casella degli strumenti.

Per aggiungere questo tipo di comportamento a UserControl, è necessario aggiungere DesignerAttribute alla definizione della classe personalizzata UserControl. Per esempio:

using System.ComponentModel; 
using System.ComponentModel.Design; 

[Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))] 
public class MyUserControl : System.Windows.Forms.UserControl 
{ 
    //...your code here 
} 

(. Vedere il relativo MSDN articolo per ulteriori letture)


Se si desidera implementare il supporto completo di progettazione per nidificati controlli all'interno del vostro UserControl, questo è un po 'più difficile. Per una discussione più completa, vedere this article su CodeProject.

Problemi correlati