Mon entreprise a une grande application écrite en VB6, et pour des raisons historiques, l'application est naviguée avec la touche Entrée au lieu de la touche Tab. Je ne connais pas VB6, mais je sais qu'ils définissent actuellement le focus pour chaque contrôle dans une grande instruction select dans l'événement KeyUp du formulaire s'il s'agit d'une clé EnterKey. Maintenant, nous commençons à convertir en .NET, et nous devons garder les choses cohérentes pour que les utilisateurs n'aient pas besoin de TAB sur certains formulaires et d'ENTRER sur d'autres. Je veux écrire des formes d'ancêtre qui entreront automatiquement d'un champ à l'autre au lieu de tabuler. Un collègue m'a dit que la façon dont cela se fait dans VB6 est de traiter les boutons non pas sur l'événement CLICK mais sur l'événement KEYUP. Je dois continuer à le faire afin que je n'aie plus d'événements KeyUp restants à renvoyer à VB6 une fois mon formulaire terminé. L'ordre des événements pour les boutons estComment naviguer entre les champs avec la touche Entrée
- button_PreviewKeyDown
- Button_Click (remplaçant apparemment l'événement KeyPress)
- form_KeyUp
- button_KeyUp
J'ai créé des formes comme suit:
- Dans l'événement KeyUp du formulaire ANCESTOR, c diable pour voir si c'est une clé d'entrée. S'il s'agit d'une touche d'entrée et que le contrôle actif n'est pas un bouton, il passe au champ suivant dans l'ordre des onglets. Sinon, il ignore la clé et laisse le contrôle la gérer. Si c'est un bouton, l'ancêtre ne présume pas de savoir où le bouton veut aller, parce que cela dépendra de ce que le bouton veut faire quand il est "cliqué".
- Sur les boutons du formulaire CHILD, l'événement click ne fait rien et le traitement est dupliqué dans les événements KeyUp et MouseClick.
- La forme ANCESTOR a une valeur booléenne protégée, EatKeyUp, qui peut être définie sur True par l'ENFANT. Cela est utilisé lorsque le formulaire enfant doit envoyer un MessageBox, car si l'utilisateur entre via le bouton OK sur le MessageBox, il reste un événement KeyUp restant qui sera consommé par le formulaire ancêtre.
Bien que klugey, cela semble effectivement fonctionner. Ce que je veux savoir, c'est s'il y a un meilleur moyen? Peut-être un réglage quelque part que je peux dire à mon application "Entrez par des formes au lieu de tabulation"? Est-ce que les événements que j'utilise à la place des événements click sont les meilleurs?
Je n'ai pas essayé cela parce que je ne suis plus à ce travail (hourra!). Mais cela semble raisonnable - merci! – CindyH