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:
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!