visuales usuario personalizados para net formulario dinamicamente crear controles control comunes componentes comandos agregar c# winforms controls components

c# - personalizados - ¿Cuál es la diferencia entre Control de usuario, Control personalizado y Componente?



crear controles dinamicamente c# winforms (5)

Esta es una diferencia entre CustomControl y UserControl:

Control personalizado

Un código wrt de control débilmente acoplado y UI

Deriva de Control

Define UI en un ResourceDictionary

La interfaz de usuario es skinable

Tiene un diseño dinámico

La interfaz de usuario se puede cambiar en diferentes proyectos

Tiene soporte completo de caja de herramientas

Define un solo control

Mas flexible

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

Control de usuario

Un código wrt de control estrechamente acoplado y UI

Deriva de UserControl

Define UI como XAML normal

Los controles secundarios son skinable

Tiene diseño estático

La interfaz de usuario es fija y no puede tener diferentes apariencias en proyectos diferentes

No se puede agregar a la caja de herramientas

Define un conjunto de controles

No es muy flexible como un control personalizado

Estas son tres cosas diferentes que puede agregar a un proyecto y no estoy seguro si entiendo la diferencia. Todos parecen, por ejemplo, aparecer en la caja de herramientas del componente cuando trabajan con un Form . ¿Cuáles son algunos escenarios de uso común para cada uno de ellos? ¿Cuál es la diferencia?


Agregando a lo que dijo Fredrik, generalmente los componentes y controles personalizados se usarían cuando planee reutilizarlos en los proyectos. Use controles de usuario cuando solo lo esté usando en un proyecto.


Creo que la última declaración no es correcta en mi opinión. Creo controles de usuario por muchas razones diferentes.

La razón principal es que, por ejemplo, si diseño una interfaz de múltiples controles agrupados.

Primero creo una biblioteca de clases, luego le agrego controles de usuario. Ahora si necesito cambiar cualquier parte de la lógica detrás de cómo funciona el control de usuario, puedo hacerlo muy fácilmente. También esta biblioteca de clase se puede usar varias veces.

También dentro de la misma biblioteca con clase puedo tener múltiples clases que se pueden compartir y usar para cualquiera de mis controles de usuario.

Esta es la razón principal por la que uso controles de usuario. Y si realiza un cambio en su control de usuario o biblioteca de clases. una vez que construyes el trabajo. el dll actualizará dinámicamente la fecha en la carpeta bin.

Entonces, si estoy haciendo referencia a esto en otro proyecto, esos cambios también aparecerán en un nuevo proyecto.

Tampoco usa las mismas rutinas de pintura que el formulario y todo lo que haya cargado en el formulario.

Entonces los controles de usuario nos dan la capacidad de ser muy modulares y puedo tener múltiples controles de usuario que comparten las clases básicas de la biblioteca de clases ... Así que un propósito de control del usuario no es solo para un proyecto. No tiene limitaciones a ese respecto. jeff


La principal diferencia entre Control de usuario, Control personalizado y Componente es que heredan de diferentes niveles en el árbol de herencia:

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

Entonces, en resumen, obtienes una cantidad diferente de funcionalidad precableada con las diferentes opciones.

¿Cuándo usarías las diferentes opciones? (estos son pensamientos y opiniones, no verdades)

  • Cree un componente si desea proporcionar funcionalidad sin UI (como componentes del temporizador, fuentes de datos, ...)
  • Cree un control personalizado si desea crear un componente donde tenga control total sobre su apariencia visual , y no quiere ningún equipaje de funcionalidad innecesaria. Los casos típicos serían controles simples con funcionalidad limitada (como un botón)
  • Cree un control de usuario si va a combinar los controles existentes en bloques de construcción reutilizables (como dos listas con botones donde puede mover elementos entre las listas).

La principal diferencia entre ellos: User Control es un archivo de página con extensión .ascx que solo se puede usar en una única aplicación o proyecto. Pero los controles personalizados son ensamblados (archivos dll) que se pueden usar en múltiples aplicaciones.