Bonjour,

J'ai créé un formulaire Form1 composé de 2 TextBox et d'un bouton.
Voici le code condensé :
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
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.