Panel et focus sur des controls

cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 - 13 août 2010 à 14:12
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 - 16 août 2010 à 11:28
Bonjour,
je rencontre un petit souci pour passer d'un control a l'autre dans mon form.
J'ai un formulaire avec plusieurs groupbox
dans ces groupbox j'ai des combobox
avec comme propriete
tabindex1 ,2,3,4,5....
quand l'utilisateur appuie sur la touche entrée j'anvoie un senkeys.send("{TAB}") qui fonctionne
la ou ca se complique
c'est que comme je veux avoir un formulaire "dynamique" , je rajoute un panel avec des combobox
dans mon groupbox
ce formulaire est invisible dans un premier temps
si je choisi un item particulier du combobox 2
mon panel devient visible avec ses combobox et "remplace" ( en fait il est par dessus et les combobox en dessous sont a enabled=false) les combobox 3 et 4 (avec les tabindex
3 et 4)
j'ai donc mis les proprietes des combobox de mon panel tabindex a 3 et 4
mais quand je fais entrer (ou tab) sur le combobox2 (je voudrais que le focus aille sur le combobox 3 de mon panel) le focus passe au combobox 5 (du groupbox d'en "dessous" )directement , puis 6 et enfin 3(de mon panel) puis 4 de mon panel...
Existe-t-il un moyen de le faire passer du 2 au 3 en faisant juste tab sans avoir a coder specifiquement un evenement pour le combobox2 ?

5 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
13 août 2010 à 19:00
Bonjour

Si ne m'abuse, l'ordre des controles est défini par leur index dans la collection de controles.
lorsque l'on change l'ordre des tabulation dans le designer, c'est l'ordre d'insertion dans la liste des controles qui est impacté.
donc si tu ajoutes dynamiquement un controle dans la collection de controles de la forme il va se retrouver à la fin

tu peux en changer sa position en utilisant this.Controls.SetChildIndex(...)

Bon code
Bob
C# is amazing, enjoy it!
0
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 2
16 août 2010 à 08:42
Merci de la réponse ,
Je vais tester cela mais je ne les ajoute pas vraiment dynamiquement , ils sont deja la mais a visible=false
N'y a til rien au niveau du designer qui puisse faire la meme chose ?
0
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 2
16 août 2010 à 09:27
Bon alors j'ai cherché de ce coté... par contre mes controles ne sont pas directement des controles "fils" du form principal
concretement :
j'ai un groupbox ou il ya mes mes textbox et combobox "visibles"
dans ce groupbox je met un panel "invisible" avec des controles. quand je selectionne un element d'un combobox dans groupbox, je voudrais que mon panel apparaissent (en cachant donc les autres controls "inutiles" pour l'element selectionné NB : je met les autres elements en enabled=false;) .
j'ai noté les "childindex ": (je ne vois pas leur lien avec l'ordre donné par tabindex)
ds le groupbox : combobox3 ( a cacher ) :9 tabindex=3
combobox4 (a cacher) : 6 tabindex=4
panel qui devra cacher les combobox1 et 2 : 2 (tabindex=31 le meme que celui de groupbox)
dans ce panel j'ai encore 2 groupbox avec les tabindex 3 et 4
ensuite dans le groupbox "principal" j'ai d'autres textbox et combobox avec les tabindex 5,6,7 (cela restent affichés en permanence)

donc quand je passe sur le groupbox : j'ai le sequencement suivant
control 1, puis 2 , (ensuite j'ai combobox3,4 si ils sont affichés) , 5 , 6 ,7
si j'affiche le panel
control1 , 2 , 5,6,7 puis les elements du panel (tabindex 3 et 4)...
et je voudrais
control1 ,2 elements du panel 3 et 4 puis 5,6,7
Existe t il une methode pour réaliser cela de manière simple ?
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
16 août 2010 à 09:30
Bonjour

Dans le Designer tu peux faire afficher l'ordre des tabulations, et le changer.
Lorque le designer est ouvert, click sur le menu View, puis TabOrder
l'ordre des tabulations s'affiche, pour en changer click sur les controles dans l'odre de tabulation souhaité.
Re-click sur le menu View TabOrder pour revenir en mode normal.

Bob
C# is amazing, enjoy it!
0

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

Posez votre question
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 2
16 août 2010 à 11:28
OK alors pour mes controle du groupbox j'ai :
36,1,31,3
et 36,1,31,4
pour ceux du panel j'ai :
36,1,31,31,0,3
et 36,1,31,31,0,4
et je voudrais que ceux du panel puissent prendre la place des losrqu'on appuie sur tab
quelle valeur dois je mettre (et comment j'arrive pas a modifier manuellement ces valeurs...)?


Ok j'ai compris : il faut que le panel ait la meme valeur de tabindex que les controles que je voulais "cacher"

j'ai donc mis son tabindex a 2
pour les combobox du panel j'ai donc
36,1,31,2,0,3
et 36,1,31,2,0,4
et ca a l'air de fonctionner

merci encore
0
Rejoignez-nous