Bonjour,
je veux remplacer la touche Tab pour la manipulation des texBox par les touche du haut et de bas du clavier, merci beaucoup
Version imprimable
Bonjour,
je veux remplacer la touche Tab pour la manipulation des texBox par les touche du haut et de bas du clavier, merci beaucoup
Il faut intercepter l'évènement KeyDown pour savoir quelle touche est enfoncée
Tu peux obtenir le contrôle suivant dans l'ordre de tabulation avec la méthode GetNextControl
Pour mettre le focus sur le contrôle suivant, utilise la méthode Focus
GetNextControl est une méthode de la classe contrôle. Tu l'appelles sur le contrôle qui contient le contrôle en cours, en passant en paramètre le contrôle en cours. Par exemple :
et tu assignes ce handler d'évènement à tous les contrôles qui doivent avoir ce comportementCode:
1
2
3
4
5
6
7
8
9
10 private void childControl_KeyDown(object sender, KeyEventArgs e) { Control next; if (e.KeyCode == Keys.Down) next = this.GetNextControl(sender as Control, true); else if (e.KeyCode == Keys.Up) next = this.GetNextControl(sender as Control, false); if (next != null) next.Focus(); }
Puisque ya des comboBox et des texBox, j'ai fais comme suit :
il y'a cette erreur : Erreur 167 Use of unassigned local variable 'next' .Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 private void comboBox1_KeyDown(object sender, KeyEventArgs e) { Control next; if (e.KeyCode == Keys.Down) next = this.GetNextControl(sender as Control, true); else if (e.KeyCode == Keys.Up) next = this.GetNextControl(sender as Control, false); if (next != 0) next.Focus(); }
D'habitude quand j'utilise les touche up et down du clavier les valeurs de comboBox se défilent, je veux quand je click sur up ou down le textBox en dessus qui sera actif, merci beaucoup
petit erreur dans ton code
Code:
1
2
3
4
5 //Remplace if(next !=0) //Par if(next!=null)
et initialise next à null au début (lors de sa déclaration)
J'ai fais comme suite:
Pour sauter d'un comboBox a l'autre il faut taper Enter, danc la touche bas ne sert pas, est ce que c'est possible de laisser les touche up et down pour sauter d'un comboBox a l'autre et la touche entrer pour defiler le comboBox si on la tape pour la 1ere foi, et si pour la 2ème fois on valide ce qui a été choisis dans le menu de defilement du comboBox, merci énormementCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 private void comboBox1_KeyDown(object sender, KeyEventArgs e) { Control next; next = null; if (e.KeyCode == Keys.Enter) next = this.GetNextControl(sender as Control, true); else if (e.KeyCode == Keys.Up) next = this.GetNextControl(sender as Control, false); if (next != null) next.Focus(); }
euh... j'ai pas trop compris ce que tu veux
on peut à peu près tout faire, il suffit de jouer sur les évènements
Je veux à tout prix que l'utilisateur n'utilise pas la souris, juste les touche up, down et entrer, Jai fais comme suit:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 private void comboBox2_KeyUp(object sender, KeyEventArgs e) { this.comboBox2.DataSource = this.dataSet2; this.comboBox2.DisplayMember = "APPAREILS.MATRICULE"; this.comboBox2.ValueMember = "APPAREILS.MATRICULE"; if (c2 == 0) {if (e.KeyCode == Keys.Enter) comboBox2.DroppedDown = true; c2 = -1; } if (c2 == -1) { comboBox2.DroppedDown = !comboBox1.DroppedDown; c2 = 0; }
au debut je charge le comboBox, je veux faire cela :
1-quand j'appuy sur entrer dans une combo box, y'a le defilement, ce que jai realisé,
2-quand le defilement apparait les touches up et down permettent de choisir dans le comboBox.
3-En appuyant sur entrer pour la 2ème fois, la ligne du comboBox choisi sera selectionée et la disparition de la liste defilante.
4-En appuyant sur les touches up et down on selectionne un autre comboBox .
Aidez moi svp a rsoudre ce gros problem, Merci infiniment.
Ben bonjour l'ergonomie... :roll:
Pourquoi tu veux pas utiliser les tabulations, c'est standard et tous le monde connait... si tu mets un truc complètement différent les utilisateurs seront perdus
Dans ton code je me demande s'il n'y a pas un problème avec les accolades ici :
"c2 = -1" sera exécuté même si e.KeyCode n'est pas Enter... je sais pas si c'est ce que tu veuxCode:
1
2
3 {if (e.KeyCode == Keys.Enter) comboBox2.DroppedDown = true; c2 = -1; }
De toutes façons tu n'as pas besoin d'utiliser une variable d'état (c2), tu peux simplement tester la valeur de DroppedDown
J'ai rencontré pleins de pbs, je veux defiler la liste du comboBox par les touche up et down et je veux aussi quand j'appuy sur entrer sur la 2ème fois la ligne voulu sera selectionnée (parceque que je veux choisir un element de la liste defilante en appuyant sur entrer la liste apparait une deuzième fois, ce que je veux pas), je sais que c'est assez compliqué, mais je doit ofrir a l'utilisateur d'utiliser l'application avec une seule main ce qui pas le cas avec tab, merci enormement
Tu charge ton ComboBox avec la fonction Load de ta form
puis, on va jouer sur le paramétre DroppedDown du comboBox
Edit : ça Marche pas, je viens de tester ^^Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 private void comboBox2_KeyDown(object sender, KeyEventArgs e) { if(e.KeyCode==Keys.Enter) comboBox2.DroppedDown = !comboBox2.DroppedDown; else if(e.KeyCode == Keys.Up) { if(!comboBox2.DroppedDown) NextControl();//TODO ^^ } else if(e.KeyCode == Keys.Down) { if(!comboBox2.DroppedDown) PreviousControl();//TODO aussi^^ } }
Edit : ça pourrai être améliorer :mrgreen:
Pour moi ça a un autre comportement :
Quand j'appui sur "Entrer", le dropdown s'ouvre, et je choisi bien mon item, Quand je réappui sur "Entrer", le dropdown se ferme.
Mais quand j'appui sur Up ou Down (les fleches haut ou bas), ça passe au controle suivant certes mais, ça change aussi l'élément séléctionné dans le comboBox :mrgreen:
Oui enfin ça marche:yaisse2:, la propriété dropdownstyle été a dropdownlist:roll:, je l'est remis a dropdown,merci infiniment.
j'ais fais comme suit:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 private void comboBox1_KeyDown(object sender, KeyEventArgs e) { Control next; next = null; if (e.KeyCode == Keys.Enter) comboBox1.DroppedDown = !comboBox1.DroppedDown; else if (e.KeyCode == Keys.Up) { if (!comboBox1.DroppedDown) next = this.GetNextControl(sender as Control, false); if (next != null) next.Focus(); } else if (e.KeyCode == Keys.Down) { if (!comboBox1.DroppedDown) next = this.GetNextControl(sender as Control, true); if (next != null) next.Focus(); } }
Cependant, y'a juste un petit problem, les dateTimepicker, j'en ai 4, quand j'appuie sur les touches down et up il y'a la date qui varie, je veux passer d'un dateTimepicker a un autre et pas changer la date, merci énormement