Con questa, iniziamo le lezioni dedicate alla programmazione visuale in C#, ossia al posto di una finestrella console con soltanto del testo da scrivere, dovremmo gestire l’output su vere e proprie finestre corredate da barra del titolo, client area, barra di stato e via dicendo ( se non avete dimestichezza con le parti ed i controlli di una finestra Windows vi consiglio di leggere questo articolo ). Con il Visual Studio è possibile creare al volo e con wizard dei progetti WinForms, noi invece trasformeremo il nostro progetto console del corso in uno visuale, faremo tutto tramite codice sorgente, perché ritengo che saputo questo il resto viene da solo. Per prima cosa occorre aprire le proprietà del progetto C# e nella scheda “Applicazione” al posto di “Tipo di Output”, “Applicazione console”, inserire “Applicazione Windows”. Occorre anche inserire i riferimenti alle classi che gestiscono le forms ed in particolare aggiungere “System.Drawing” per disegnare nelle finestre, “System.Windows.Forms” per la gestione delle finestre stesse. Arrivati a questo punto inseriremo il codice minimale per mostrare una finestra con soltanto barra del titolo, icona e pulsanti di sistema.
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; public class WinCorso : System.Windows.Forms.Form { private System.ComponentModel.Container cntMain = null; public WinCorso() { Init(); } protected override void Dispose(bool disposing) { if (disposing) { if (cntMain != null) { cntMain.Dispose(); } } base.Dispose(disposing); } private void Init() { ClientSize = new System.Drawing.Size(296, 110); Name = "WinCorso"; Text = "Corso di Windows"; ResumeLayout(false); } [STAThread] static void Main() { Application.Run(new WinCorso()); } }
Questo è il codice quasi minimale per creare una finestra in C#. Come vedete la classe della nostra finestra deriva da una “Form”, all’interno abbiamo il “Container” che contiene appunto tutti gli oggetti visuali nella finestra, al momento non ne abbiamo nessuno. Il costruttore della classe chiama il metodo Init, che è stato creato da noi, per inizializzare tutti i componenti della finestra, questo per maggiore leggibilità del codice. Come vedete ho implementato il metodo Dispose del contenitore, per rilasciare tutte le risorse allocate nella finestra. Il metodo principale della classe è Main, che come per le applicazioni console può anche avere gli argomenti della riga di comando, in esso abbiamo la chiamata al metodo Run dell’applicazione, che inizia il ciclo dei messaggi della finestra e così la manda in esecuzione e viene visualizzata. In particolare con [STAThread] significa che noi vogliamo un’applicazione con thread singolo ( Single Threaded Apartment ), invece se vogliamo un’applicazione multithreaded dobbiamo inserire [MTAThread] (Multi Thread Apartment ) prima del metodo Main. Come sempre ricordo che per chiedermi qualcosa o per qualsiasi dubbio potete iscrivervi al forum sul C# e chiedere ( approfittatene voi che ne avete la possibilità ).
<< Lezione Precedente – Inizio Corso – Indice Lezioni – Lezione Successiva >>