Nella scorsa lezione del corso sul linguaggio C# abbiamo introdotto la programmazione visuale con le winforms, tutto effettuato da codice. Ora, basterà cambiare il nome della nostra funzione Init in quella che l’ambiente di sviluppo si aspetta, InitializeComponent e fatta questa modifica al codice e salvato, la form potrà essere aperta per default in modalità visuale, ossia gestire la grandezza ed altre proprietà della finestra e dei controlli contenuti, completamente in maniera grafica.
Aggiungiamo alla nostra form un controllo etichetta ( label ), una casella combinata ( combobox ) ed un pulsante di comando ( command button ), servendoci della barra dei controlli standard e trascinandoli sulla nostra form. Per maggiori informazioni sui controlli di Windows potete fare riferimento a questo mio articolo, mentre per le proprietà di questi ultimi, potete studiarli o sull’aiuto in linea dell’ambiente di sviluppo oppure su qualche manuale dedicato al linguaggio C# ( anche se devo dire che potrebbero anche andare bene dei manuali sul VB.NET o addirittura su VC/C++, perché i controlli sono quasi gli stessi e con le stesse proprietà nei tre ambienti di sviluppo della Microsoft ). Il codice prodotto dopo l’aggiunta dei controlli è il seguente:
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 Label lblMain; private ComboBox cmbMain; private Button btnMain; private Container cntMain = null; public WinCorso() { InitializeComponent(); } protected override void Dispose(bool disposing) { if (disposing) { if (cntMain != null) { cntMain.Dispose(); } } base.Dispose(disposing); } private void InitializeComponent() { this.lblMain = new System.Windows.Forms.Label(); this.cmbMain = new System.Windows.Forms.ComboBox(); this.btnMain = new System.Windows.Forms.Button(); this.SuspendLayout(); // lblMain this.lblMain.AutoSize = true; this.lblMain.Location = new System.Drawing.Point(16, 25); this.lblMain.Name = "lblMain"; this.lblMain.Size = new System.Drawing.Size(138, 13); this.lblMain.TabIndex = 0; this.lblMain.Text = "Scegliere l\'animale preferito:"; // cmbMain this.cmbMain.FormattingEnabled = true; this.cmbMain.Items.AddRange(new object[] { "Cavallo", "Leone", "Scimmia", "Coccodrillo", "Elefante"}); this.cmbMain.Location = new System.Drawing.Point(162, 23); this.cmbMain.Name = "cmbMain"; this.cmbMain.Size = new System.Drawing.Size(240, 21); this.cmbMain.TabIndex = 1; // btnMain this.btnMain.Location = new System.Drawing.Point(138, 65); this.btnMain.Name = "btnMain"; this.btnMain.Size = new System.Drawing.Size(162, 32); this.btnMain.TabIndex = 2; this.btnMain.Text = "Ho Scelto"; this.btnMain.UseVisualStyleBackColor = true; // WinCorso this.ClientSize = new System.Drawing.Size(430, 122); this.Controls.Add(this.btnMain); this.Controls.Add(this.cmbMain); this.Controls.Add(this.lblMain); this.Name = "WinCorso"; this.Text = "Corso di Windows"; this.ResumeLayout(false); this.PerformLayout(); } [STAThread] static void Main() { Application.Run(new WinCorso()); } }
Come potete notare era possibile anche fare tutto tramite codice sorgente, ma il tempo di sviluppo sarebbe stato certamente maggiore. Da notare che i valori nella casella combinata vengono inseriti negli items, che sono la lista dei singoli valori e che sono gestiti tramite le collections, così come per quelli delle liste ed in tutti quei controlli che possiedono gli items. Da dire che i valori possono essere un elenco statico, ma anche provenienti da un database, l’ambiente di sviluppo è perfettamente in grado di fare tutto graficamente ed in maniera semplicissima. Ovviamente dovete però conoscere il codice, affinché se doveste apportare delle piccole modifiche saprete dove mettere le mani, questo è il vero mio intento, insegnarvi a saper capire il codice creato dall’ambiente di sviluppo. Notate ancora che nella funzione InitializeComponent vengono istanziati i controlli, applicate le proprietà ed infine aggiunti all’insieme dei controlli della finestra. Nella prossima lezione termineremo questo esercizio trattando i delegati e gli eventi.
<< Lezione Precedente – Inizio Corso – Indice Lezioni – Lezione Successiva >>