Tengo una idea general, y hay algunos casos obvios, pero también hay algunas áreas grises para mí: ¿cuándo es mejor usar para extender desde un componente y cuándo es mejor crear un control de usuario? Esto se refiere a un problema de trabajo específico que estoy tratando de resolver, pero los detalles de eso no son importantes; una respuesta general a esta pregunta es suficiente para mí.Cuándo agregar una clase de componente vs control de usuario?
Respuesta
En WPF y Windows Forms, ambos, la diferencia principal es que un UserControl está destinado a ser una colección de controles, un objeto único reutilizable, "compuesto" a partir de múltiples controles.
Debería impeler un Component/CustomControl/Control en lugar de un UserControl si está realizando un control único y primitivo con un nuevo comportamiento, en lugar de hacer un "control" compuesto por controles más pequeños. Componente generalmente es un comportamiento no visual, donde un control/control personalizado suele ser para un control visual.
En general, usaría Component
cuando el control no tiene ninguna interfaz de usuario (o al menos no una que esté presente en el formulario). Si es un control de IU, crearía un User Control
en su lugar.
Normalmente extiendo Control, o más de UserControl, solo cuando deseo empaquetar algunas funciones de UI. Para los componentes, pienso en el ejemplo clásico, el temporizador. Se puede soltar en el diseñador, configurarse a través del panel Propiedades y luego acceder mediante programación a través del código subyacente. En resumen, extiendo Component cuando quiero poder manipular un estado y comportamiento combinados, un objeto sin IU, a través del diseñador.
Hay una diferencia significativa entre un componente y un control: los controles tienen una interfaz de usuario. Todos los controles también son componentes, pero no todos los componentes son controles. Si necesita mostrar una interfaz de usuario, generalmente se requeriría derivar de algún tipo de base de Control (Control, UserControl, Formulario, etc.). Si solo tiene un comportamiento, como con el componente BackgroundWorker, entonces solo debería derivar de Component directamente.
Otra nota ... tanto los componentes como los controles pueden soltarse en una superficie de diseño. Los componentes aparecen como un ícono y una etiqueta en un área especial; los controles aparecen directamente en la superficie de diseño. Sin embargo, hay una tercera cosa que puedes usar: una Clase simple. Si no necesita soporte de superficie de diseño, le recomendaría usar una clase simple en lugar de Componente o Control. Son más livianos y menos hinchados cuando todo lo que necesitas es un comportamiento 100% puro sin soporte en tiempo de diseño.
- 1. Componente Vs Control
- 2. Ventana vs Control de usuario
- 3. ¿Cuándo usar UserControl vs. Control en Silverlight?
- 4. Cómo agregar control de usuario al panel
- 5. VS 2010 estableciendo archivo de clase no GUI como Componente
- 6. Derivar el control de usuario de la clase base de control de usuario personalizado
- 7. Reemplazando una clase de componente en delphi
- 8. cómo agregar una clase al componente de entrada en una envoltura en simple_form 2
- 9. Agregar control de usuario a la página de pestaña
- 10. WPF control de usuario problema de clase base
- 11. WPF control de usuario dentro de otro control de usuario
- 12. ¿Agregar algo como ShowDialog a un control de usuario personalizado?
- 13. anotaciones de nivel de clase vs interfaces
- 14. clase base genérica para WinForm control de usuario
- 15. Control de fuente vs. Control de revisión?
- 16. Control de usuario - Propiedades personalizadas
- 17. DataSource para control de usuario
- 18. cortar una clase de control DLL
- 19. ¿Cómo eliminar una clase CSS de un componente de Wicket?
- 20. Python: terminología 'clase' VS 'tipo'
- 21. WIX agregar nuevo archivo al componente compartido
- 22. Uso de un control de usuario en una clase de página base
- 23. Deshacer personalizado en forma diseñada o control de usuario
- 24. (en su caso) se puede tomar una ASP.NET control de usuario heredan de otro control de usuario?
- 25. Eventos de control de usuario
- 26. VS 2010 - Error al abrir Control de Usuario/Formulario con el diseñador
- 27. cuándo usar Set vs. Collection?
- 28. Diseñador Rechazar control de usuario
- 29. ¿Cuál es la diferencia entre una Biblioteca de control de usuario y una Biblioteca de control personalizado?
- 30. ¿Cómo agregar control de barra de progreso a Matlab gui?