cs_Liro
Messages postés159Date d'inscriptionjeudi 7 septembre 2006StatutMembreDernière intervention30 septembre 2011
-
22 mai 2009 à 09:01
cs_Liro
Messages postés159Date d'inscriptionjeudi 7 septembre 2006StatutMembreDernière intervention30 septembre 2011
-
26 mai 2009 à 13:38
Bonjour,
Je suis sous visual basic 2008 express.
Je voudrais détecter l'appuie sur une touche dans mon form principal.
J'ai mis:
Me.KeyPreview = True
dans mon form principal ainsi que
Public Sub form1_KeyPress(ByVal KeyAscii As Integer)
Select Case KeyAscii
Case 13
MsgBox("Return")
Case 27
MsgBox("Escape")
End Select
en dehors de mon form principal.
Quand je lance le débugage le form se charge comme voulu mais l'appuie sur Enter ou Echap ne donne rien.
J'ai cherché sur le net et je ne trouve pas.
Es-ce que quelqu'un peut m'aider SVP?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202175 22 mai 2009 à 09:19
et pis d'abord, faut pas confondre KeyCode et KeyAscii, c'est mal !
je veux dire par là que KeyPress te donne le code Ascci du caractère généré par la pression de la touche.
Cette pression est observé par KeyDown et KeyUp qui te filent e code de la touche pressée.
en l'occurrence, la touche Echap.... ben elle génère aucun caractère. KeyPress ne sera donc jamais déclenché par cette touche.
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Windows.Forms.Keys.Escape
MessageBox.Show("Escape")
Case Windows.Forms.Keys.Enter
MessageBox.Show("Enter")
End Select
End Sub
le 'en dehors de ton formulaire principal' mérite d'être explicité.
après, s'il s'agit juste d'activer un bouton 'OK' ou 'Cancel' en pressant ces touches, tu as d'autres moyens (propriétés AcceptButton et CancelButton de ton formulaire)
cs_Liro
Messages postés159Date d'inscriptionjeudi 7 septembre 2006StatutMembreDernière intervention30 septembre 2011 22 mai 2009 à 09:37
Ouaih bah chapeau Renfield avec ton code ça marche!
En fait je fais un petit soft pour compter et afficher les points lors d'un match de tennis de table.
J'ai un seul forme avec des caractères géant pour les scores et les manches et je voudrais pouvoir incrémenter facilement le score de chaque joueur avec des raccourcis sur les touches espace et return.
cs_Liro
Messages postés159Date d'inscriptionjeudi 7 septembre 2006StatutMembreDernière intervention30 septembre 2011 22 mai 2009 à 17:50
Nan, nan, car il faut gérer les manches mais aussi décrémenter le score (en cas d'erreur).
Donc je reste la dessus.
Comment je fais pour éviter à un bouton d'avoir le focus?
(après avoir cliqué sur un bouton de remise à zéro pour une nouvelle partie, dès que l'utilisateur appuie sur une touche ce même bouton est à nouveau "cliqué")
cs_Liro
Messages postés159Date d'inscriptionjeudi 7 septembre 2006StatutMembreDernière intervention30 septembre 2011 26 mai 2009 à 08:46
J'ai mis:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call restart()
Me.Focus
End Sub
Et pourtant quand j'appuie sur espace ou Enter c'est comme si je cliquais sur le bouton.
En je veux éviter que par erreur (en appuyant sur enter ou espace) ça lance la procédure restart.