Come indicato nella domanda, c'è qualche differenza nel significato dei due applicato ai Controlli di .NET. Oppure sono alias l'uno dell'altro?
Come indicato nella domanda, c'è qualche differenza nel significato dei due applicato ai Controlli di .NET. Oppure sono alias l'uno dell'altro?
Un controllo utente è una composizione di controlli esistenti mentre un controllo personalizzato è un controllo derivato da un controllo di base. Questo potrebbe essere meglio in stackoverflow btw.
Controllo utente: qualsiasi controllo ereditato dalla classe UserControl
; Questi tipi di controlli hanno un markup associato e possono avere code-behind in base al tipo di progetto che hai (se il tuo progetto è un sito Web o un'applicazione web). Questi controlli non sono utili per la riutilizzabilità tra i progetti. Sono ottimi candidati da utilizzare come Viste in MVC (Model-View-Controller).
Controllo personalizzato: qualsiasi controllo che eredita da Control
, o WebControl
o CompositeControl
o DataBoundControl
o alcune altre classi base in .NET. Questi controlli non hanno associato il markup con loro. Sono abbastanza buoni per essere incapsulati in una DLL e riutilizzati in più progetti. I controlli personalizzati di solito richiedono una maggiore comprensione di come funziona il Web e di solito si sovrascrive il metodo CreateChildren
o Render
per determinare l'output del controllo.
Controllo utente Questi sono i controlli esistenti del framework e vengono utilizzati insieme ad altri controlli per facilitare determinate azioni come il controllo dell'accesso
Controllo personalizzato In questo caso erediti dal controllo disponibile e aggiungi funzionalità personalizzate per quel controllo e le tue esigenze. qualcosa come una colonna Datepicker in DataGridView
Non so se ci sia un'utile distinzione tra loro nel mondo delle vinacce, ma in asp.net (moduli web) questa è la distinzione:
Un usercontrol può avere un markup dichiarativo in un file XXXX.ascx mentre la logica viene inserita nel file XXXX.ascx.cs corrispondente. Ogni volta che vuoi usare l'usercontrol devi dichiarare quale file ascx vuoi usare.
Un controllo personalizzato non può avere markup dichiarativo, ma può essere utilizzato semplicemente specificando lo spazio dei nomi (ad esempio globalmente in web.config)
o più sinteticamente: un usercontrol è molto più facile da scrivere ma leggermente più difficile da usare, un controllo personalizzato è (potenzialmente) molto più difficile da scrivere ma leggermente più facile da usare.
Tutti i controlli integrati forniti da MS sono controlli personalizzati che li rendono più facili da usare (non è necessario specificare un file ascx per utilizzare un asp: Label per esempio)
Generalmente: se stai per creare un controllo composto da molti sottocontrolli, vorresti andare con usercontrol, ma se stai estendendo un controllo standard con qualche nuova logica vorrai andare con controllo personalizzato
Leggi altre domande sui tag .net winforms custom-control