Bonjour;
J'ai crée un textBox numérique avec une expression régulière
Donc cette TextBox permet tous les chiffres et caractère de controle(ctrl+v;ctrl+z,...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Regex myRegex = new Regex(@"[\d\b\cv\cx\cc\ca\cz\cy\r\n]"); //Traitement quand on appui sur une touche private void tbxTest_KeyPress(object sender, KeyPressEventArgs e) { //Si la touche entée au clavier ne correspond pas au regex if (!myRegex.IsMatch(e.KeyChar.ToString())) { //Arrete le touche - Le caractère n'est pas validé. e.Handled = true; MessageBox.Show("Ce caractère ne peut pas être utilisé", "Attention", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
J'ai donc voulu contrôler ce que l'utilisateur colle dans la TextBox avec l’évènement TextChanged:
Donc ici, je regarde tout ce qui a dans le presse-papier et j'enlève tout mauvais caractère. Mais j'ai un problème ma textBox et bloquée à 4 caractères. Quand la textbox contient par exemple 12 et que l'utilisateur colle a3b4 j'aimerais que la textBox affiche 1234. Mais le résultat de mon traitement est que la textbox n'affiche que 34.
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 private void tbxTest_TextChanged(object sender, EventArgs e) { //On se désabonne a l'évenement tbxTest_TextChanged pour eviter que le traitement soit recusrsif this.tbxTest.TextChanged -= new System.EventHandler(this.tbxTest_TextChanged); //Copier-Coller Match match = Regex.Match(tbxTest.Text, @"[^\d\b\cv\cx\cc\ca\cz\cy\r\n]"); int matchCount = 0; while (match.Success) { matchCount++; match = match.NextMatch(); } if (matchCount > 0) { tbxTest.Text = Regex.Replace(Clipboard.GetText().ToString(), @"[^\d\b\cv\cx\cc\ca\cz\cy\r\n]", String.Empty); MessageBox.Show("Certains caractères coller sont invalides: "+ matchCount, "Attention", MessageBoxButtons.OK, MessageBoxIcon.Information); } //On se réabonne a l'évenement tbxTest_TextChanged this.tbxTest.TextChanged += new System.EventHandler(this.tbxTest_TextChanged); }
Merci pour tout aide.
Partager