Controlli ed Eventi nelle Winforms in C#

Nella lezione scorsa ci siamo soffermati sulla spiegazione dei delegati e della formazione degli eventi, questa volta metteremo in pratica le nozioni apprese e vedremo, in un esempio concreto, come implementare i diversi eventi che occorrono nelle winforms del .NET. Se prendiamo l’esempio che avevamo creato due lezioni fa, possiamo osservare una finestra con dei controlli: una label ( etichetta ), una combobox ( casella combinata ) con dei nomi di animali nella lista ed infine un push button control ( tasto di comando ).

Ora, tramite codice, implementeremo l’evento “Click” sul pulsante e restituiremo un messaggio con scritto il nome dell’animale scelto o errore, se non è stata fatta nessuna scelta. Mentre andrete a scrivere il codice, vedrete quanto sia semplice con il Visual Studio .NET scrivere un evento, infatti quando si richiama un controllo, appare un elenco con proprietà, metodi ed eventi, contraddistinti dall’icona di un fulmine. Per assegnare l’evento “Click” al pulsante di comando con scritto “Ho Scelto”, occorre dichiarare la nostra funzione che verrà richiamata allo scatenamento dell’evento, chiameremo questa funzione “Scelta” e per ora inseriremo soltanto una MessageBox ( piccole finestre per mostrare messaggi ).

...
public void Scelta(Object sender, System.EventArgs e)
{
   MessageBox.Show("Hai Premuto il Tasto!", "Corso C#",
       MessageBoxButtons.OK, MessageBoxIcon.Information);
}
...

Con questo codice verrà mostrato un messaggio con scritto “Hai Premuto il Tasto”, nella caption della finestra ci verrà scritto “Corso C#”, abbiamo inserito solo il pulsante “OK” e l’icona è quella di informazione. Per fare in modo di richiamare questa funzione nell’evento “Click” del pulsante dobbiamo aggiungere nel delegato multicast la funzione passata nell’EventHandler ( gestore degli eventi ).

...
this.btnMain.Click += new EventHandler(Scelta);
...

Come potete notare nell’evento “Click” del pulsante aggiungo un EventHandler che ha come argomento la funzione da richiamare, che dovrà avere come argomenti l’oggetto chiamante, nel nostro caso il pulsante e gli argomenti dell’evento. A questo punto compiliamo il codice ed eseguiamolo; si noterà che in effetti alla pressione del pulsante, verrà mostrata la finestra di avviso. Ora rendiamo un pochino migliore il risultato dello scatenamento dell’evento “Click” del pulsante.

...
public void Scelta(Object sender, System.EventArgs e)
{
  String strVal = cmbMain.Text;
  if (strVal.Length > 0)
   MessageBox.Show("Hai scelto l'animale " + strVal, "Corso C#",
     MessageBoxButtons.OK, MessageBoxIcon.Information);
  else
   MessageBox.Show("Si prega di fare la vostra scelta", "Corso C#",
     MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
...

Il mio consiglio è quello di non fare copia e incolla, bensì capire l’articolo e poi andare a scrivere il codice attraverso il ragionamento, se non ricordate qualcosa andate a rileggere questo articolo o cercate nella guida in linea o in Internet o nel nostro forum. Ricordo che se non vi sforzate ora a fare le cose più elementari, poi non ci capirete più nulla, una casa senza fondamenta crolla al primo vento. Ora che abbiamo capito come funzionano gli eventi non vi resta che studiarli, anche se, man mano che svilupperete applicazioni, incapperete sicuramente in nuovi eventi. Il miglior modo per sapere quali sono gli eventi e quando vengono scatenati è andare nella guida in linea del Visual Studio .NET e cercare, per ora, i controlli più importanti e basilari, come il pulsante di comando, la casella combinata, le liste, le trackbar ed altri; noterete che per ogni controllo avete spiegazioni su proprietà, metodi ed eventi.
Ampliamo il nostro esercizio con la gestione dell’evento DropDownClosed della casella combinata, che viene scatenato alla scelta dalla lista di un qualsiasi valore.

...
this.cmbMain.DropDownClosed +=
 new EventHandler(OnComboAnimali_DropDownClosed);
...
public void OnComboAnimali_DropDownClosed(Object sender,
 System.EventArgs e)
{
 String strVal = cmbMain.SelectedItem.ToString();
 if (strVal.Length > 0)
 {
   switch (strVal)
   {
     case "Leone":
      MessageBox.Show("Il leone è il re della foresta!",
        "Informazione Animale", MessageBoxButtons.OK,
	MessageBoxIcon.Information);
        break;
     case "Cavallo":
        MessageBox.Show("Trotta trotta cavallino!",
           "Informazione Animale",
	   MessageBoxButtons.OK, MessageBoxIcon.Information);
        break;
     case "Scimmia":
        MessageBox.Show("Tu Cita, Io Tarzan!",
            "Informazione Animale",
	    MessageBoxButtons.OK, MessageBoxIcon.Information);
         break;
     }
  }
  else
      MessageBox.Show("Si prega di fare la vostra scelta",
         "Corso C#",
	 MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
...

Essere un pochino goliardici a volte aiuta anche nell’imparare la programmazione. Vi lascio l’esercizio completo da scaricare a questo indirizzo, ma non siate pigri, scrivete riga per riga, perché ripeto ( e non mi stancherò mai di ripeterlo ), senza impegno non si arriva da nessuna parte.

<< Lezione PrecedenteInizio CorsoIndice LezioniLezione Successiva >>

Di Giampaolo Rossi

Sviluppatore software da oltre 16 anni.