Bonjour;

J'ai crée un textBox numérique avec une expression régulière
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);
            }
        }
Donc cette TextBox permet tous les chiffres et caractère de controle(ctrl+v;ctrl+z,...)
J'ai donc voulu contrôler ce que l'utilisateur colle dans la TextBox avec l’évènement TextChanged:
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);
        }
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.

Merci pour tout aide.