BUG... (keydown et picturebox = incompatibilité) ???? [Résolu]

BlackAngel2 14 Messages postés lundi 15 mars 2004Date d'inscription 2 juin 2009 Dernière intervention - 15 oct. 2005 à 17:53 - Dernière réponse : PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention
- 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
Afficher la suite 

5 réponses

Meilleure réponse
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 15 oct. 2005 à 18:16
3
Merci
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/

Merci cs_DARKSIDIOUS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Meilleure réponse
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 15 oct. 2005 à 18:45
3
Merci
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.

(testé VB6 avec 2TxtBox + 1 PictureBox)

PCPT [AFCK]

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Meilleure réponse
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 15 oct. 2005 à 18:46
3
Merci
KeyPress KeyDown *

Merci PCPT 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

BlackAngel2 14 Messages postés lundi 15 mars 2004Date d'inscription 2 juin 2009 Dernière intervention - 17 oct. 2005 à 02:25
0
Merci
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é!
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 17 oct. 2005 à 02:54
0
Merci
ok ;)

si tu changes d'avis, 150 pictures, çà va vite :


Private Sub Form_Load()
Dim Ctrl As Object
For Each Ctrl In Me
If TypeOf Ctrl Is PictureBox Then Ctrl.TabStop = False
Next
End Sub


<SMALL> Coloration syntaxique automatique [AFCK]</SMALL>


+

PCPT [AFCK]

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.