Francesco Geri

Il blog di Francesco Geri
posts - 94, comments - 165, trackbacks - 2

Da oggi al cinema: "Non Usare KeyUp!" - sottotitolo: oggi ce l'ho con la Microsoft!

Ragazzi, oggi la mia stima nei confronti della Microsoft è un po' calata.

Dopo essermi lamentato della prepotenza di outlook, ora mi trovo a dovermi lamentare anche della gestione eventi di VB.NET.

Provate a mettere una bella textbox (con nome TextBox1) in un form e scrivere questo codice:

   1:     Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp
   2:        If e.KeyCode = Keys.Return Then
   3:           MessageBox.Show("Premuto invio")
   4:        End If
   5:     End Sub

 

Poi mandate in esecuzione, portate il focus sulla textbox e premete invio. Compare il messagebox, ri-premete invio per chiuderlo e TAC! Ricompare il messagebox.

Dunque, succede che la pressione del tasto "invio" mentre è attiva la finestra del messagebox scatena la gestione dell'evento di click sul pulsante (che chiude la fistra) e mette in coda l'evento di keyup. Questo evento viene spedido sul controllo attivo ovvero a textbox1 (dal momento che la messagebox è già chiusa e quindi non se lo può gestire).

Ci sarà una spiegazione a tutto questo, ma non voglio nemmeno saperla. Secondo me questo funzionamento non è quello che ci si aspetterebbe!

 

Comunque se vi capita una situazione del genere poteve ovviare al problema usando l'evento KeyDown o KeyPress al posto di KeyUp. L'importante è NON USARE KEYUP!

Print | posted on mercoledì 5 dicembre 2007 07:09 | Filed Under [ VS2005 .Net ]

Powered by:
Powered By Subtext Powered By ASP.NET