VbNicoG
Messages postés127Date d'inscriptionvendredi 27 juin 2008StatutMembreDernière intervention 6 septembre 2019
-
30 avril 2009 à 10:43
VbNicoG
Messages postés127Date d'inscriptionvendredi 27 juin 2008StatutMembreDernière intervention 6 septembre 2019
-
30 avril 2009 à 14:05
Bonjour,
J'ai un soucis sur une form dans laquelle j'ai plusieurs boutons.
J'ai la propriété Keypreview de la form a TRUE.
J'aimerais tout simplement sur la touche Entrée du clavier faire l'action du bouton OK.
Jusque là pas de soucis avec l'évènement KeyDown de la form.
Cependant, si je clique sur un autre bouton que OK, le focus est mis sur cet autre bouton, puis quand je tape sur la touche "Entrée", c'est la fonction de mon bouton qui a le focus qui est exécutée alors que j'aimerai que ce soit la fonction du bouton OK.
Il me semblait que le fait de mettre Keypreview à TRUE, gérait l'évènement KeyDown en priorité sur le focus mais ce n'est pas le cas.
VbNicoG
Messages postés127Date d'inscriptionvendredi 27 juin 2008StatutMembreDernière intervention 6 septembre 2019 30 avril 2009 à 11:47
Bonjour,
Non, malheureusement, j'ai essayé et j'ai exactement le même résultat. Si le focus est sur un autre bouton, c'est l'évènement click de cet autre bouton qui est appelé en premier.
lesdis
Messages postés403Date d'inscriptionmercredi 19 avril 2006StatutMembreDernière intervention 7 août 2020 30 avril 2009 à 12:16
En même temps, c'est un peu logique que l'appui sur la touche entrée valide le bouton sur lequel il a le focus en premier. Sinon, une personne ne possédant pas de souris(imaginons ) ne pourrait accéder au bouton.
Mais dans ton cas, il va falloir annuler l'évènement KeyDown des autres boutons.
Voir la propriété Handled de la classe System.Windows.Forms.KeyEventArgs.
VbNicoG
Messages postés127Date d'inscriptionvendredi 27 juin 2008StatutMembreDernière intervention 6 septembre 2019 30 avril 2009 à 14:05
Je veux tout simplement que lorsque j'appuie sur "Entrée", je n'ai qu'une seule action qui se produit, une action que j'ai désignée et non n'importe quelle action générée par l'objet qui a le focus.
Je pensais cela relativement simple, mais apparemment ce n'est pas possible.
Le problème c'est que sous VB.net (microsoft bien sûr) est que l'on est obligé d'accepter leur standard, sur une form, le tab change le focus des objets et la touche "éntrée" exécute l'évènement de l'objet qui a le focus. Dès que l'on veut spécifier une action avec "Entrée" par exemple, ceci se fait mais l'environnement standard est toujours présent et il peut donc y avoir un conflit sur l'exécution de l'action que l'on voulait appeler par l'évènement "Entrée".
Il me semblait que Keypreview donnait priorité aux évènements key sur l'interface "standard" windows mais apparemment ce n'est pas le cas. Tanpis, je vais faire avec.