.net user-controls visual-inheritance

.net - Herencia visual o un control de usuario?



user-controls visual-inheritance (4)

Tengo varias formas en una aplicación de Windows .net que tienen un conjunto común de cuadros de texto y otros controles de entrada de usuario, cada formulario tiene el mismo aspecto, pero cada formulario necesita cargar y guardar en diferentes tablas de la base de datos.

¿Sería mejor colocar los controles en una forma base y heredar de ella o crear un control de usuario para colocar en cada formulario?


Depende. El modelo compuesto (utilizando el Control de usuario) es más limpio, pero el control no puede conocer el formulario de llamada, por lo que debe pasar la lógica como eventos. Eso a veces puede conducir a una lógica duplicada.

Con la herencia, puede implementar código común en la clase base con algunas modificaciones en la forma de subclase e implementar una interacción flexible. Pero eso requiere que todos los implementadores de la subclase conozcan el código fuente de la clase base, que puede volverse caótico.


Normalmente prefiero UserControls ya que son más flexibles: puede usarlos en el contexto de un formulario o en cualquier otro contexto visual para visualizar o modificar datos. He tenido varios casos en los que tuve que cambiar el diseño de mi IU desde un cuadro de diálogo separado para editar algo a un control en línea dentro del formulario principal o algo así.

Aparte de eso, diría que es una cuestión de gusto.


Yo uso ambos métodos, dependiendo de la situación. Si tiene una pieza funcional de LOGIC que desea simplemente colocar en un formulario sin modificar, entonces creo que los UserControls son apropiados. Sin embargo, si solo busca duplicar y extender una IU común en múltiples formas, entonces la herencia visual es probablemente la mejor opción.


Dependiendo de la lógica detrás de sus controles de usuario más simples de usar conectados con eventos. Si hay tareas en común, puede usar un control de servidor de clase base.