Bonjour,
J'ai besoin de faire un TextBox qui n'accepte que des chiffres donc après recherche, j'ai essayé l'utilisation d'expression régulière qui m'amène au même problème suivant :
Ma textbox refuse les lettres et tout autres caractères mais les caractères qui se trouvent avec les chiffres au-dessus du clavier sont quand même accepter...
Mon regex est le suivant
Je l'utilise comme ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public bool Verifier(string chaine) { System.Text.RegularExpressions.Regex myRegex = new Regex("[1-9\b]"); return myRegex.IsMatch(chaine); }
J'ai reussi a faire une texte box numérique sans regex, comme çà:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 private void tbxTest_KeyUp(object sender, KeyEventArgs e) { if (regex.Verifier(e.KeyCode.ToString()) == false) { tbxTest.Text =""; MessageBox.Show("Ce champ ne doit contenir que des chiffres.", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { } }
Mais moi j'aimerais réussir a faire fonctionner le regex.
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 private bool pasNombreEntrer = false; private void tbxTest_KeyDown(object sender, KeyEventArgs e) { pasNombreEntrer = false; // Déterminer si la frappe est un numéro du clavier numérique . if ((e.KeyCode < Keys.NumPad1 || e.KeyCode > Keys.NumPad9)) { // Determine si le frappe est un backspace. if (e.KeyCode != Keys.Back) { // Déterminer si la frappe est un numéro à partir du haut du clavier . if (((e.KeyCode > Keys.D1 || e.KeyCode < Keys.D9) && (Control.ModifierKeys != Keys.Shift) && !(Control.IsKeyLocked(Keys.CapsLock))|| (e.KeyCode < Keys.D1 || e.KeyCode > Keys.D9)) //On ne peut pas utiliser Shift si caps lock est activé || ((Control.ModifierKeys == Keys.Shift) && (Control.IsKeyLocked(Keys.CapsLock)))) { // Une touche non numérique a été enclecher pasNombreEntrer = true; } } } private void tbxTest_KeyPress(object sender, KeyPressEventArgs e) { if (pasNombreEntrer == true) { //Le caractère est non numérique donc il n'est pas validé e.Handled = true; MessageBox.Show("Ce champ ne doit contenir que des chiffres.", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
Je vous remercie en avance pour l'aide qu vous m'apporterez.
Partager