Bouger le focus sur un groupe, et l'empêcher de passer à un autre groupe [VB][WP

Jayme65 Messages postés 66 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 26 mars 2019 - 12 nov. 2011 à 16:13
 Utilisateur anonyme - 12 nov. 2011 à 23:14
Bonjour,

Désolé pour le titre du sujet qui est un peu obscure, je m'en rends compte ;-)

Voila, avec une image ce sera plus facile:

Nous sommes dans une fenêtre gérant les préférences du programme.

Note importante: tous les déplacements se font au clavier, avec les curseurs, et la touche "1" pour sélectionner un bouton.

Voila ce que je dois accomplir:
Avec le curseur, je me déplace à travers les boutons (ce sont en fait des "checkbox") et je valide ma préférence en pressant la touche "1" (tout ca, c'est bon et ca marche!)

MAIS, si je sélectionne le bouton "Genre" je dois "activer" une liste déroulante et y faire mon choix (par "1") puis presser sur "2" pour quitter ce "sous-menu" et revenir à la navigation normale à travers les boutons.

Ma question:
----------------
Comment, après avoir sélectionner "Genre", puis-je dorénavant "réserver" le curseur "haut/bas" à cette liste déroulante (et éviter par exemple que le focus atteigne les autres boutons). Puis, quand l'utilisateur en a terminer et presse "2" sur son clavier, remonter dans la hiérarchie et naviguer à nouveau uniquement à travers les boutons!

(j'espère que tout cela est clair?! ;-)

Pour l'instant, ce que j'ai fait: quand le bouton "Genre" est sélectionné, je déclare que la "grid" qui contient les éléments peut recevoir le focus..et le prends:
genreGris.IsFocusable = True
genreGrid.Focus()
Et en effet, la "grid" qui jusqu'à là était ignorée dans le déplacement par curseur est maintenant prise en compte. Le problème, c'est qu'au premier "haut/bas" avec le curseur, je "repars" vers les boutons.

En résumé:
--------------
Comment puis je "réserver" le déplacement par curseur à certaines parties de ma fenêtre.
D'abord pouvoir naviguer à travers plusieurs groupes de "checkbox", puis se limiter à une seule zone (Grid ou StackPanel), et pouvoir revenir en arrière

Merci de m'avoir lu et pour l'aide que vous voudrez bien m'apporter!

4 réponses

Utilisateur anonyme
12 nov. 2011 à 17:00
Salut
Tu mets simplement le focus sur la listbox en question... non?

(listbox1.visible = true - listbox1.focus)

et quand tu valides un item tu la rends invisible et tu remets le focus sur un bouton




CF2i - Guadeloupe
Ingénierie Informatique
0
Jayme65 Messages postés 66 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 26 mars 2019 2
12 nov. 2011 à 20:18
acive,
Merci pour ta réponse!
Oui, j'imagine que cela pourrait marcher...mais vois-tu, le problème est que je n'utilise pas de listBox...pour plusieurs raisons (propre à mon programme) j'ai du faire autrement et ce sont en fait un groupe de label qui sont compris dans ce grid ou stackpanel.
La question reste la même: il faut que je puisse "rentrer" dans une grid et ne plus en sortir jusqu'à ce que la commande en soit donnée

Merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 231
12 nov. 2011 à 20:31
Lorsque tout, sauf ce que l'on veut autoriser est inhibé (propriété enabled), l'utilisateur n'a pas d'autre choix que de s'y conformer
Intelligible ? (j'espère que oui)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Utilisateur anonyme
12 nov. 2011 à 23:14
Exact, la solution de UC peut aussi marcher:
En d'autres thermes tu rends tous tes contrôles disable sauf ta liste de labels.

Tu dois aussi jouer avec le Label_GotFocus/LostFocus et Label.BackColor pour savoir lequel a le focus je pense.

Je pense aussi que ce n'est pas une bonne idée de placer des labels, nous avons des listbox, combobox etc qui sont parfaitement adaptés à cet effet et ça t'aurait évité ce genre de problèmes.

CF2i - Guadeloupe
Ingénierie Informatique
0