Sto utilizzando Visual Studio per creare un'applicazione GUI in C #. La Casella degli strumenti funge da una tavolozza di componenti nifty che mi permette di trascinare facilmente pulsanti e altri elementi (per chiarezza dirò il pulsante ogni volta che intendo "controllo") sul mio modulo, il che rende le forme statiche abbastanza facili da fare. Tuttavia, ho incontrato due problemi:
- Creare i pulsanti in primo luogo è molto lavoro. Quando ho un modulo che non è statico (cioè pulsanti o altri controlli vengono creati in fase di esecuzione in base a ciò che l'utente fa) non posso usa la palette a tutti. Devo invece creare manualmente ciascun pulsante, chiamando il costruttore nel metodo che sto utilizzando, quindi inizializzarlo manualmente specificando altezza, larghezza, posizione, etichetta, gestore di eventi e così via. Questo è estremamente noioso perché devo indovinare tutti questi parametri cosmetici senza essere in grado di vedere come sarà la forma, e genera anche molte linee di codice ripetitivo per ciascun pulsante.
-
Anche fare i pulsanti è un compito molto impegnativo. Affrontare gli eventi in un'applicazione completa è un enorme problema. L'unico modo che so come fare è selezionare un pulsante, andare alla scheda eventi nelle sue proprietà, fare clic sull'evento
OnClick
in modo che generi l'evento nel codiceForm
, quindi compilare il corpo dell'evento. Dal momento che voglio separare la logica e la presentazione, tutti i miei gestori di eventi finiscono per essere chiamate su una singola linea alla funzione di business logic appropriata. Ma usando questo per molti pulsanti (ad esempio, immagina il numero di pulsanti presenti in un'applicazione come MS Word) inquina il codice del mioForm
con dozzine di metodi boilerplate event handler ed è difficile mantenerlo.
Per questo motivo, qualsiasi programma GUI più complicato di Hello World è molto poco pratico da realizzare per me. Per essere chiari, non ho alcun problema con la complessità dei programmi che scrivo che hanno un'interfaccia utente minima - mi sento in grado di utilizzare OOP con un discreto livello di competenza per strutturare in modo ordinato il mio codice di logica aziendale. Ma quando si sviluppa la GUI, sono bloccato. Sembra così noioso che mi sento come se stessi reinventando la ruota, e c'è un libro da qualche parte là fuori che spiega come fare GUI correttamente che non ho letto.
Mi manca qualcosa? Oppure tutti gli sviluppatori di C # accettano solo gli elenchi infiniti di gestori di eventi ripetitivi e codice di creazione di pulsanti?
Come suggerimento (spero utile), mi aspetto che una buona risposta parlerà di:
- Uso delle tecniche OOP (come il modello predefinito) per semplificare la creazione ripetuta di pulsanti
- Combinare molti gestori di eventi in un unico metodo che controlla
Sender
per capire quale pulsante lo ha chiamato e si comporta di conseguenza - XAML e utilizzo di WPF anziché di Windows Form
Non avere per menzionare nessuno di questi, naturalmente. È solo la mia ipotesi migliore su quale tipo di risposta sto cercando.