tutorial tamaño letra formularios escala cambiar automático automatic ajuste winforms model-view-controller

winforms - formularios - cambiar tamaño de letra label c#



¿Cómo implementaría MVC en una aplicación de Windows Forms? (6)

Bueno, en realidad, Windows Forms implementa una versión "libre" de MVC, al igual que algunas películas implementan algunas malas interpretaciones "de estilo libre" de algunos libros clásicos (me vienen a la mente Romeo y Julieta).

No digo que la implementación de Windows Forms sea mala, es ... diferente.

Si usa Windows Forms y técnicas de OOP adecuadas, y tal vez un ORM como EntitySpaces para su acceso a la base de datos, entonces podría decir que:

  1. La infraestructura ORM / OOP es el Modelo
  2. Las formas son las vistas
  3. Los controladores de eventos son el controlador

Aunque tener View y Controller representados por el mismo objeto dificultan la separación del código de la representación (no hay una manera fácil de agregar una "vista GTK +" en una clase derivada de Microsoft.Windows.Forms.Form).

Lo que puedes hacer, si eres lo suficientemente cuidadoso. Es mantener el código de su formulario completamente separado del código de su controlador / modelo escribiendo solo cosas relacionadas con la GUI en los manejadores de eventos, y toda la lógica de negocios en una clase separada. En ese caso, si alguna vez quisiste usar GTK + para escribir otra capa de Vista, solo necesitarías reescribir el código de la GUI.

No desarrollo demasiadas aplicaciones de escritorio / Windows Forms, pero se me ocurrió que podría haber algún beneficio al usar el patrón MVC (Model View Controller) para el desarrollo .NET de Windows Forms.

¿Alguien ha implementado MVC en Windows Forms? Si es así, ¿tiene algún consejo sobre el diseño?



Eche un vistazo al bloque de aplicaciones MS Smart Patterns and Practices Smart Client, que contiene algunas instrucciones y clases que le guiarán por la implementación de un patrón de presentación de modelos en los formularios de Windows, eche un vistazo a la aplicación de referencia incluida.

Para WPF esto está siendo reemplazado por el proyecto de prism

El enfoque de las fábricas de software es una excelente forma de aprender las mejores prácticas


Lo que hice en el pasado es usar algo similar, Model-View-Presenter .

[NOTA: este artículo solía estar disponible en la web. Para verlo ahora, deberá descargar el CHM, y luego ver las propiedades del archivo y hacer clic en Desbloquear. Luego puede abrir el CHM y encontrar el artículo. Gracias a un millón, Microsoft! suspiro ]

El formulario es la vista, y tengo una interfaz IView para él. Todo el procesamiento ocurre en el presentador, que es solo una clase. El formulario crea un nuevo presentador y se pasa a sí mismo como IView del presentador. De esta forma, para las pruebas, puede pasar una IView falsa y luego enviarle comandos del presentador y detectar los resultados.

Si tuviera que usar un Model-View-Controller completo, supongo que lo haría de esta manera:

  • La forma es la vista . Envía comandos al modelo, plantea eventos a los que el controlador puede suscribirse y se suscribe a eventos del modelo.
  • El controlador es una clase que se suscribe a los eventos de la vista y envía comandos a la vista y al modelo.
  • El modelo genera eventos a los que la vista se suscribe.

Esto encajaría con el diagrama clásico de MVC . La mayor desventaja es que con los eventos, puede ser difícil saber quién se está suscribiendo a qué. El patrón MVP usa métodos en lugar de eventos (al menos, la forma en que lo implementé). Cuando el formulario / vista genera un evento (por ejemplo, someButton.Click), el formulario simplemente llama a un método en el presentador para ejecutar la lógica para él. La vista y el modelo no tienen ninguna conexión directa; ambos deben pasar por el presentador.



Windows Forms no está diseñado desde cero para usar MVC. Tienes dos opciones.

Primero, puede implementar su propia implementación de MVC.

En segundo lugar, puede usar un marco MVC diseñado para Windows Forms.

El primero es simple de comenzar a hacer, pero cuanto más se obtiene, más complejo es. Sugiero que busque un framework MVC bueno, preexistente y probado, diseñado para trabajar con Windows Forms. Creo que esta publicación de blog es un buen punto de partida.

Para cualquiera que empiece, le sugiero omitir Windows Forms y desarrollar en contra de WPF, si tiene la opción. Es un marco mucho mejor para crear la interfaz de usuario. Hay muchos frameworks MVC que se están desarrollando para WPF, incluidos este y aquel .