Bonjour,
J'ai créé un formulaire Form1 composé de 2 TextBox et d'un bouton.
Voici le code condensé :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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.
Partager