Changement de focus avec fleche clavier

Signaler
Messages postés
103
Date d'inscription
lundi 23 avril 2007
Statut
Membre
Dernière intervention
20 octobre 2012
-
Messages postés
103
Date d'inscription
lundi 23 avril 2007
Statut
Membre
Dernière intervention
20 octobre 2012
-
Bonjour a tous,
Apres recherche sur le web, je n'ai trouvé que des devellopeurs dans la meme situation sans solution!
j'ai un controle qui perd le focus quand j'utilise les fleches haut, bas, gauche, ou droite. C'est problematique car j'ai besoin de le faire reagir a ces touches claviers. Du coup je ne passe plus dans mon evenement keydown de mon controleY a t'il moyen de desactiver cette perte de focus??

2 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
76
Salut
Pas assez clair.
"J'ai un control" : quel type ?
"qui perd le focus" : Oui, c'est normal.
J'ai fait l'essai avec deux CommandButton : les flèches font passer d'un bouton à l'autre.
"j'ai besoin de le faire reagir" : "le" = qui ?

Donc, ta question est "comment détecter les flèches quand aucun control de saisie n'a le focus"
En effet, c'est un problème car le KeyPreview de la forme ne fonctionne pas puisque c'est Windows qui intercepte cet évènement pour gérer l'affichage.
2 solutions :
- Donner le focus à une TextBox (installé en dehors de l'affichage de la forme) par exemple avant de taper les flèches
- Faire un Hook de la forme afin de capturer tous les évènements avant que Windows ne s'en occupe.
  C'est une technique plus complexe.
  Tu trouveras des exemples en tapant "hook" dans la recherche des codes en excluant .NET

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
103
Date d'inscription
lundi 23 avril 2007
Statut
Membre
Dernière intervention
20 octobre 2012

C'est un controle de type "map", il sert a afficher de l'information geographiques georeferencée, (exemple: image aerienne que l'on peut superposer avec des couches d'informations vecteur de type polygone representant des parcelles). Je voulais me servir des flêches pour deplacer l'emprise de la carte, la fleche "up" devant provoquer un deplacement vers le nord.
Merci pour les solutions proposées malgré mon manque de clarté!

Je suis un peu frileu pour le hook, j'avais déjà implanté un code de ce type(pour intercepter la molette de la souris) à une de mes applis mais je ne dois pas avoir le niveau necessaire pour le faire fonctionner correctement et ca plantais. La soluce textbox était interessante mais je pense avoir trouvé plus simple :
Ce n'est peut etre pas très propre mais ça fonctionne. En tout cas elle est hyper simple. Je gère les déplacements de ma carte (controle "map") dans l'evenement "lost_focus". Ce, en verifiant bien sur que une des quatres flêche du clavier est enfoncée. Si c'est le cas je redonne le focus au controle map apres avoir effectué le déplacement.