Keypreview / évènement key

VbNicoG Messages postés 127 Date d'inscription vendredi 27 juin 2008 Statut Membre Dernière intervention 6 septembre 2019 - 30 avril 2009 à 10:43
VbNicoG Messages postés 127 Date d'inscription vendredi 27 juin 2008 Statut Membre Derniè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.

Comment fait on ?

Merci.

5 réponses

lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Dernière intervention 7 août 2020
30 avril 2009 à 11:45
Bonjour,

La propriété AcceptButton de la form ne correspondrait pas à votre demande?

Bonne Prog
0
VbNicoG Messages postés 127 Date d'inscription vendredi 27 juin 2008 Statut Membre Derniè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.

Une autre idée ?
Merci
0
lesdis Messages postés 403 Date d'inscription mercredi 19 avril 2006 Statut Membre Derniè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.

Bonne Prog
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 avril 2009 à 13:46
pourquoi vouloir sortir des clous.... et troubler l'utilisateur avec une interface non standard ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
VbNicoG Messages postés 127 Date d'inscription vendredi 27 juin 2008 Statut Membre Derniè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.

Merci
0
Rejoignez-nous