Qual è la differenza tra controllo utente, controllo personalizzato e componente?

Queste sono tre cose diverse che puoi aggiungere a un progetto e non sono sicuro di capire la differenza. Ad esempio, sembrano tutti apparire nella casella degli strumenti componente quando si lavora con un Form . Quali sono alcuni scenari di utilizzo comuni per ciascuno di essi? Qual è la differenza?

La principale differenza tra Controllo utente, Controllo personalizzato e Componente è che essi ereditano da diversi livelli nell’albero ereditario:

 MyComponent |-> Component MyCustomControl |-> Control |-> Component MyUserControl |-> ContainerControl |-> ScrollableControl |-> Control |-> Component 

Quindi, in breve, si ottiene una diversa quantità di funzionalità pre-cablate con le diverse opzioni.

Quando useresti le diverse opzioni? (questi sono pensieri e opinioni, non verità)

  • Creare un componente se si desidera fornire funzionalità senza UI (come componenti del timer, origini dati, …)
  • Crea un controllo personalizzato se vuoi creare un componente in cui hai il pieno controllo del suo aspetto visivo e non desideri alcun bagaglio di funzionalità inutili. Casi tipici sarebbero controlli semplici con funzionalità limitate (come un pulsante)
  • Crea un controllo utente se vuoi combinare i controlli esistenti in blocchi predefiniti riutilizzabili (come due elenchi con pulsanti in cui puoi spostare gli elementi tra gli elenchi).

Questa è una differenza tra CustomControl e UserControl:

Controllo personalizzato

Un codice wrt e un’interfaccia utente controllati in modo approssimativo

Deriva da Controllo

Definisce l’interfaccia utente in un ResourceDictionary

L’interfaccia utente è skinable

Ha un layout dinamico

L’interfaccia utente può essere modificata in diversi progetti

Ha il pieno supporto per gli strumenti

Definisce un singolo controllo

Più flessibile

==============

Controllo dell’utente

Un codice wrt di controllo strettamente accoppiato e UI

Deriva da UserControl

Definisce l’interfaccia utente come normale XAML

I controlli figlio sono skinable

Ha un layout statico

L’interfaccia utente è fissa e non può avere un aspetto diverso in un progetto diverso

Non può essere aggiunto alla casella degli strumenti

Definisce un set di controlli

Non molto flessibile come un controllo personalizzato

Aggiungendo a ciò che Fredrik ha detto, generalmente i componenti e i controlli personalizzati verrebbero utilizzati quando si pianifica di riutilizzarli attraverso i progetti. Utilizzare i controlli utente quando lo si utilizzerà solo in un progetto.

Credo che l’ultima affermazione non sia corretta secondo me. Creo controlli utente per molte ragioni diverse.

Il motivo principale è che, se per caso, disegno un’interfaccia di più controlli raggruppati insieme.

Per prima cosa creo una libreria di classi, quindi aggiungo i controlli utente ad essa. Ora, se ho bisogno di cambiare qualsiasi parte della logica dietro il funzionamento del controllo utente, posso farlo molto facilmente. Anche questa libreria di classi può essere utilizzata più volte.

Anche all’interno della stessa libreria di class posso avere più classi che possono essere condivise e utilizzate per i miei controlli utente.

Questa è la ragione principale per cui utilizzo i controlli utente. E se apporti una modifica al tuo controllo utente o alla libreria di classi. una volta che hai costruito il lavoro. la DLL aggiornerà dynamicmente la data nella cartella bin.

Quindi, se sto facendo riferimento a questo in un altro progetto, quelle modifiche appariranno anche nel nuovo progetto.

Inoltre non usa le stesse routine di pittura come il modulo e tutto ciò che hai caricato nel modulo.

Quindi i controlli utente ci danno la possibilità di essere molto modulari E posso avere più controlli utente che condividono le classi di base della libreria di classi … Quindi uno scopo di controllo dell’utente non è solo per un progetto. Non ha limitazioni in questo senso. jeff

La principale differenza tra loro: User Control è un file di paging con estensione .ascx che può essere utilizzato solo all’interno di una singola applicazione o progetto. I controlli personalizzati sono assembly (file dll) che possono essere utilizzati in più applicazioni.