Bonjour,
En cours de debuggage j'ai par facilité affiché deux valeurs par MessageBox, un dans l'événement intercepté KeyDown d'un textbox et l'autre dans l'événement KeyPress.
Je ne m'attendais pas à rencontrer le moindre problème sur ce point, il s'agit de base élémentaire. Or, j'ai reçu mes message dans l'ordre inverse de celui auquel je m'attendais, à savoir celui de l'ordre annoncé des événements KeyDown puis KeyPress.
J'ai donc écrit "bêtement" ceci pour m'en assurer:
Et là, j'ai reçu d'abord "Press" et ensuite seulement "Down".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 private void textBox1_KeyDown(object sender, KeyEventArgs e) { MessageBox.Show("Down"); } private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { MessageBox.Show("Press); }
Comme ça me semblait illogique, j'ai déclaré une variable globale "i" et j'ai écrit ceci :
Et contre toute attente, j'ai reçu dans l'ordre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private void textBox1_KeyDown(object sender, KeyEventArgs e) { MessageBox.Show("Down: " + i.ToString()); i++; } private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { MessageBox.Show("Press: " + i.ToString()); i++; }
- Press : 0
- Down: 0
et à la seconde touche frappée :
- Press: 2
- Down: 2
Donc, mon premier message a été construit, puis le second, et ensuite seulement les 2 incrémentations de i ont été faites. ???
J'ai alors testé ceci :
et cette fois, j'ai obtenu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private void textBox1_KeyDown(object sender, KeyEventArgs e) { i++; MessageBox.Show("Down: " + i.ToString()); } private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { i++; MessageBox.Show("Press: " + i.ToString()); }
- Press: 2
- Down: 1
J'en déduis l'ordre suivant :
1)Incrémentation de i dans KeyDown
2) Création du MessageBox de KeyDown
3) Incrémentation de i dans KeyPress
4) Création du MessageBox de KeyPress
5) Affichage du MessageBox de KeyPress
6) Affichage du MessageBox de KeyDown
Une âme charitable pourrait-elle m'expliquer le phénomène en jeu?
Merci d'avance,
Claude
Partager