Estoy usando Visual Studio para crear una aplicación GUI en C #. Toolbox sirve como una paleta de componentes ingeniosa que me permite arrastrar y soltar fácilmente botones y otros elementos (para mayor claridad, diré botón cada vez que me refiero a "control") en mi formulario, lo que hace que los formularios estáticos sean bastante fáciles de hacer. Sin embargo, me encuentro con dos problemas:
- Crear los botones en primer lugar es mucho trabajo. Cuando tengo un formulario que no es estático (es decir, los botones u otros controles se crean en tiempo de ejecución de acuerdo con lo que hace el usuario) no puedo usar la paleta en absoluto. En cambio, tengo que crear cada botón manualmente, llamando al constructor en cualquier método que esté usando, y luego inicializar manualmente especificando la altura, el ancho, la posición, la etiqueta, el controlador de eventos, etc. del botón. Esto es extremadamente tedioso porque tengo que adivinar todos estos parámetros cosméticos sin poder ver cómo se verá la forma, y también genera muchas líneas de código repetitivo para cada botón.
- Hacer que los botones hagan algo también es mucho trabajo. Hacer frente a los eventos en una aplicación con todas las funciones es un gran dolor. La única forma en que sé cómo hacer esto es seleccionar un botón, ir a la pestaña de eventos en sus propiedades, hacer clic en el
OnClick
evento para que genere el evento en elForm
código de s, y luego completar el cuerpo del evento. Como quiero separar la lógica y la presentación, todos mis controladores de eventos terminan siendo llamadas de una sola línea a la función de lógica de negocios adecuada. Pero usar esto para muchos botones (por ejemplo, imagine la cantidad de botones presentes en una aplicación como MS Word) contamina el código de myForm
con docenas de métodos de control de eventos repetitivos y es difícil mantener esto.
Debido a esto, cualquier programa GUI más complicado que Hello World es muy poco práctico para mí. Para ser claros, no tengo ningún problema con la complejidad de los programas que escribo que tienen una interfaz de usuario mínima. Siento que soy capaz de usar OOP con un alto grado de competencia para estructurar perfectamente mi código de lógica de negocios. Pero al desarrollar la GUI, estoy atascado. Parece tan tedioso que siento que estoy reinventando la rueda, y hay un libro en algún lugar que explica cómo hacer GUI correctamente que no he leído.
¿Me estoy perdiendo de algo? ¿O todos los desarrolladores de C # simplemente aceptan las interminables listas de controladores de eventos repetitivos y el código de creación de botones?
Como una sugerencia (con suerte útil), espero que una buena respuesta hable sobre:
- Usar técnicas OOP (como el patrón de fábrica) para simplificar la creación repetida de botones
- Combina muchos controladores de eventos en un solo método que comprueba
Sender
para averiguar qué botón lo llamó y se comporta en consecuencia - XAML y usando WPF en lugar de Windows Forms
No tiene que mencionar ninguno de estos, por supuesto. Es solo mi mejor suposición en cuanto a qué tipo de respuesta estoy buscando.