BlackAngel2
Messages postés14Date d'inscriptionlundi 15 mars 2004StatutMembreDernière intervention 2 juin 2009
-
15 oct. 2005 à 17:53
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
17 oct. 2005 à 02:54
Bonjour à tous, voici mon problème: Dans l'événement Keydown d'un textbox je veux savoir lorsqu'un usager appuit sur la touche "tab" ou les touches "shift + tab".
Le code suivant fait très bien le travail, excepté lorsque j'ajoute à ma form un contrôle PictureBox ou TransPictureCtl. Dès lors, le code n'arrive plus à attrapper la touche "tab". La seule solution que j'ai trouvé est d'utiliser un contrôle Image au lieu d'un PictureBox, mais il reste toujours que j'ai absoluement besoin de plusieurs TransPictureCtl dans ma form...
Quelqu'un a une solution ?
Merci en avance!
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode 9 And Shift 1 Then
MsgBox "shift+tab"
ElseIf KeyCode = 9 Then
MsgBox "tab"
End If
End Sub
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 15 oct. 2005 à 18:16
Il n'y a pas qu'avec un picturebox que tu rencontrera le problème, en
fait, dès que tu mets un contrôle qui peut prendre le focus, alors ton
code ne marche plus (essaye avec un commandbutton, tu verra vite !).
Cela vient sûrement de la priorité qu'accorde VB à la touche tab : il
doit donner le focus au contrôle suivant avant de déclencher le
KeyDown, et du coup, tu n'intercepte jamais le KeyDown !
La solution : faire un hook des touches du clavier (voir les sources de Keylogger par exemple).
_____________________________________________________________________
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 15 oct. 2005 à 18:45
salut,
en mettant la propriété KeyPreview à True de ta Form, le code KeyPress pour ta Form, et la propriété TabStop à False pour tes composant génants, çà devrait fonctionner.
BlackAngel2
Messages postés14Date d'inscriptionlundi 15 mars 2004StatutMembreDernière intervention 2 juin 2009 17 oct. 2005 à 02:25
Merci pour votre aide!
Après avoir compris ce qui se passait, j'ai opté pour une autre solution. J'ai mis un textbox avant et un autre apres celui que j'utilisait.
Donc ils ont respectivement 100,101 et 102 comme tabindex de sorte que je peux savoir si j'ai faite un tab ou un shift+tab à l'aide de l'événement gotFocus et je retourne le focus à mon textbox original. Les 3 textbox sont cachés dans la form alors le visuel ne souffre pas. J'ai près de 150 picturebox dans cette form là alors je n'avais pas le goût de tous les mettre à false pour le tabstop(bien que ton idée était vraiment excellente) et pour le keylogger je ne voulait ajouter trop de code puisque le projet approche les 10 000 lignes de code.
Alors, merci encore pour votre aide, vous m'avez vraiment éclairé!
Vous n’avez pas trouvé la réponse que vous recherchez ?