Bonjour à tous !
Voila plus de deux heures que je me gratte les cheveux sur un problème, à en devenir fou !
Je suis un projet d'encodage de factures pour les imprimer.
J'ai dans un Form un NumericUpDown (Name : numUpDownTotalHtva). J'ai un événement OnKeyDown définit sur ce contrôle qui doit permettre de détecter si on appuie sur la touche '.' du pavé numérique mais aussi sur 'SHIFT + ;' (correspondant au '.'). Si on appuie sur une de ces deux touches, le caractères doit être ',' et non '.' (car provoque des problèmes au niveau des décimales de mon NumericUpDown).
Voici mon code :
Pour le '.' du pavé numérique, pas de problème, le test est correct et le caractère de remplacement est bien envoyé au numericupdown.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 private void numUpDownTotalHtva_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Decimal) { SendKeys.Send(","); e.SuppressKeyPress = true; } else { if (e.Shift && e.KeyCode == Keys.OemPeriod) { SendKeys.Send(","); e.SuppressKeyPress = true; } } }
Par contre pour l'autre cas de figure, ca coince... En mode debug, il passe bien dans le second if mais il n'envoie pas le caractère de remplacement...
J'ai essayé de plusieurs façons :
ou encore
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if (e.Shift && e.KeyCode == Keys.OemPeriod) { SendKeys.Send(","); e.SuppressKeyPress = false; }
et également en retirant le test e.Shift. Dans ce cas (sans le test e.Shift), cela fonctionne correctement mais ce n'est pas le caractère '.' qui est tapé mais ';'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if (e.Shift && e.KeyCode == Keys.OemPeriod) { SendKeys.Send("{,}"); e.SuppressKeyPress = false; }
Merci de bien vouloir m'aider à résoudre ce petit problème, je commence à désespérer ^^
A bientôt,
Jisay
Partager