[VBExpress2005] Gestion Entrée/Tab et textbox
Bonjour,
J'ai créé un formulaire Form1 composé de 2 TextBox et d'un bouton.
Voici le code condensé :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| Public Class Form1
Private Sub Textbox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Textbox1.KeyUp
If e.KeyCode = Keys.Enter Then SendKeys.Send("{Tab}")
End Sub
Private Sub Textbox2_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Textbox2.KeyUp
If e.KeyCode = Keys.Enter Then SendKeys.Send("{Tab}")
End Sub
Private Sub Bouton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bouton1.Click
If Textbox1.Text = Textbox2.Text Then
MotDePasse = Textbox1.Text
Me.Close()
Else
MsgBox("Erreur de saisie.", MsgBoxStyle.OkOnly)
Textbox1.Text = ""
Textbox2.Text = ""
Textbox1.Focus()
End If
End Sub
End Class |
Mon problème : si l'utilisateur se sert de la touche Enter pour quitter la MsgBox, l'évènement Textbox1.KeyUp est déclenché (puisque c'est lui qui reçoit le focus), donc le focus passe au Textbox2.
J'ai essayé de mettre e.Handled=True avant ou après l'envoie de {Tab}, mais ça ne change rien.
Je me demandais si il n'y avait pas moyen de tester de quel "endroit" vient l'appui de la touche : si je pouvais déterminer que ma touche "Enter" a été pressée dans ma MsgBox, je pourrais ne pas effectuer l'envoi de {Tab}... Je pensais qu'en testant le type de 'sender' je pourrais faire ça, mais visiblement, c'est toujours un Textbox.
Du reste, je ne connais son type qu'en faisant un point d'arrêt pour étudier sender dans l'éditeur, car je ne comprends pas comment fonctionne GetType.
Sinon, comment faire pour supprimer les données du flux du clavier avant de mettre le focus sur Textbox1 ?
Merci d'avance pour vos conseils.