Ho un'idea generale, e ci sono alcuni casi ovvi, ma ci sono anche alcune aree grigie per me - quando è meglio usare per estendere da un componente e quando è meglio creare un controllo utente? Questo riguarda uno specifico problema di lavoro che sto cercando di risolvere, ma le specifiche di questo non sono importanti - una risposta generale a questa domanda è abbastanza per me.Quando aggiungere una classe componente o un controllo utente?
risposta
In WPF e Windows Form, entrambi, la differenza principale è che un UserControl è pensato per essere una raccolta di controlli - un singolo oggetto riutilizzabile "composto" da più controlli.
Avresti implementato un Component/CustomControl/Control invece di un UserControl se stai facendo un singolo controllo primitivo con un nuovo comportamento, invece di creare un "controllo" composto da controlli più piccoli. Il componente di solito è un comportamento non visivo, in cui un controllo/controllo personalizzato di solito è per un controllo visivo.
In generale, vorrei usare Component
quando il controllo non ha alcuna interfaccia utente (o almeno non quella presente nel modulo). Se si tratta di un controllo dell'interfaccia utente, creerei invece un User Control
.
Solitamente estendo Control, o più ofter UserControl, solo quando voglio impacchettare alcune funzionalità dell'interfaccia utente. Per Componenti, penso all'esempio classico, il Timer. Può essere rilasciato sul progettista, configurato tramite il riquadro Proprietà e quindi accessibile a livello di programmazione tramite il codice sottostante. In breve, estendo Component quando voglio essere in grado di manipolare alcuni stati e comportamenti raggruppati, un oggetto senza interfaccia utente, attraverso il progettista.
C'è una differenza significativa tra un componente e un controllo: i controlli hanno un'interfaccia utente. Tutti i controlli sono anche componenti, ma non tutti i componenti sono controlli. Se è necessario visualizzare un'interfaccia utente, derivante da qualche tipo di base di controllo (Control, UserControl, Form, ecc.) Di solito è necessario. Se si ha solo un comportamento, come nel caso del componente BackgroundWorker, sarà necessario derivare direttamente da Component.
Un'altra nota ... sia i componenti che i controlli possono essere lasciati cadere su una superficie di progettazione. I componenti appaiono come un'icona e un'etichetta in un'area speciale, i controlli appaiono direttamente sulla superficie del progetto. Tuttavia, c'è una terza cosa che puoi usare: una semplice classe. Se non hai bisogno del supporto per la superficie di progettazione, ti consiglio di utilizzare una classe semplice anziché Component o Control. Sono più leggeri e meno gonfiati quando tutto ciò che serve è un comportamento puro al 100% senza supporto per la progettazione.
- 1. Aggiungere un controllo utente a una finestra wpf
- 2. Deriva il controllo utente dalla classe base controllo utente personalizzato
- 3. Come aggiungere un controllo a un pannello in un modulo da un altro controllo utente
- 4. WPF controllo utente problema della classe base
- 5. Come aggiungere il controllo utente al pannello
- 6. Spostare un controllo utente all'interno di un altro controllo utente
- 7. Angular2 - associazione bidirezionale su una proprietà componente variabile/classe componente?
- 8. Come disconnettere un utente quando una sessione scade o termina
- 9. Come rimuovere una classe CSS da un componente Wicket?
- 10. come aggiungere una classe al componente di ingresso in un involucro in simple_form 2
- 11. Aggiungere il controllo utente alla web part in Sharepoint 2013
- 12. Quando è necessario estrarre un controllo utente in WPF
- 13. Componente Vs controllo
- 14. Sostituzione di una classe componente in delphi
- 15. aggiungi il controllo utente a un modulo
- 16. programmazione aggiungere un componente in Reagire Native
- 17. fuoco un evento quando Collection cambiato (aggiungere o rimuovere)
- 18. Come aggiungere Controllo Gravatar di AjaxControlToolkit prima o dopo la casella di controllo nel controllo casella di controllo
- 19. Perché una proprietà personalizzata in un controllo utente non viene impostata quando il controllo viene utilizzato in un DataTemplate?
- 20. È possibile aggiungere una classe a un pulsante tinyMCE personalizzato?
- 21. Utilizzo di un controllo utente in una classe della pagina di base
- 22. Come posso rendere un controllo utente estendere una classe che estende UserControl?
- 23. Nascondi controllo all'interno di una libreria di controllo utente WPF
- 24. modulo incorporato in un controllo o di modulo come controllo utente
- 25. Come si crea un controllo utente XAML personalizzato collegabile?
- 26. Assegnazione dinamica di una proprietà in un controllo utente in un controllo ripetitore ASP.NET
- 27. Cattura eventi KeyDown in un controllo utente
- 28. asp: controllo letterale null nel controllo utente
- 29. aggiungere una funzione a una classe decorare
- 30. controllo se utente è entrato nel controllo utente Asp.net MVC