it-swarm.dev

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

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

78
Svish

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

MyComponent
   |-> Component

MyCustomControl
   |-> Control
          |-> Component

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

Entonces, en resumen, obtiene 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 en el que tenga el control completo sobre su apariencia visual , y no desee ningún equipaje con 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 controles existentes en bloques de construcción reutilizables (como dos listas con botones donde puede mover elementos entre las listas).
147
Fredrik Mörk

Esta es una diferencia entre un CustomControl y un UserControl:

Control personalizado

Un código w.r.t de control libremente acoplado y UI

Deriva del 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 para la caja de herramientas

Define un solo control.

Mas flexible

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

Control de usuario

Un código w.r.t de control estrechamente acoplado y UI

Deriva de UserControl

Define la interfaz de usuario como XAML normal

Los controles de niños son skinable

Tiene diseño estático

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

No se puede agregar a la caja de herramientas

Define un conjunto de controles.

No muy flexible como un control personalizado

4
Menard Laval

Además de lo que dijo Fredrik, generalmente se usarían componentes y controles personalizados cuando planee reutilizarlos en todos los proyectos. Use los controles de usuario cuando solo lo usaría en un proyecto.

2
Chad Yeates

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

La razón principal es que, si por ejemplo, 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 del usuario, puedo hacerlo muy fácilmente. También esta biblioteca de clases se puede utilizar varias veces.

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

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

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

Además, no utiliza las mismas rutinas de pintura que el formulario y cualquier cosa que haya cargado en el formulario.

Así que los controles de usuario nos permiten ser muy modulares. Y puedo tener múltiples controles de usuario que comparten las clases básicas de la biblioteca de clases ... Por lo tanto, el propósito de control de usuario no es solo para un proyecto. No tiene limitaciones al respecto. jeff

0
Robopro