Area di riferimento
- Creating a UI for a Windows Forms Applications by Using Standard Controls
- Create event handlers for Windows Forms and controls
Gesione degli eventi
Una volta selezionato un controllo sulla form, attraverso la Properties Windows è possibile visualizzare tutti gli eventi a cui questo controllo può rispondere (simbolo di un flash giallo).
Un doppio click su un particolare evento comporta l'inserimento automatico di un gestore per quell'evento da parte dell'ambiente di sviluppo.
I principali eventi eventi sollevati dai controlli sono:
- Click
- DoubleClick
- KeyDown, KeyPress, KeyUp per gli eventi della tastiera
- MouseClick,
- MouseDoubleClick
- MoudeDown
- MouseEnter: sollevato quando il puntatore del mouse entra all'interno di un controllo
- MouseHover: sollevato quando il puntatore resta sul controllo
- MouseLeave: sollevato quando il puntatore esce dal controllo
- MouseMove: sollevato quando il mouse viene mosso sul controllo
- MouseUp: sollevato quando un pulsante del mouse è rilasciato sul controllo
- MouseWheel
Vediamo alcuni esempi di gestori di questi eventi:
private void button1_Click(object sender, EventArgs e)
{
// Codice relativo al click del pulsante
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// Leggo il carattere digitato dall'utente
char c = e.KeyChar;
// Se è un numero impedisco la sua visualizzazione
if (Char.IsDigit(c))
{
e.Handled = true;
}
}
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
// Leggo le coordinate del mouse relative al controllo
int x = e.X;
int y = e.Y;
if (e.Button == MouseButtons.Left)
{
// Hai premuto il tasto sinistro
}
else if (e.Button == MouseButtons.Right)
{
// Hai premuto il tasto destro
}
}
E' facile aggiungere e rimuovere event handler a run time utilizzando gli operatori += e -= sull'evento esposto dal controllo. E' possibile anche connettere più eventi a un singolo gestore di evento. In questo caso il gestore dell'evento deve utilizzare l'oggetto sender per sapere qual è il controllo che ha sollevato l'evento.
this.button1.Click += new System.EventHandler(this.button_Click);
this.button2.Click += new System.EventHandler(this.button_Click);
this.button3.Click += new System.EventHandler(this.button_Click);
private void button_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
if (btn == button1)
{
MessageBox.Show("Button1");
}
else if (btn == button2)
{
MessageBox.Show("Button2");
}
else if (btn == button3)
{
MessageBox.Show("Button3");
}
}