C# TextBox Angaben on the fly parsen

Gast #3096317
Lesenswert?

Hallo Alle zusammen. Ich habe folgendes Anliegen. In einem Textfeld soll 
automatisch nach der Eingabe von 4 hex-Zeichen ein Leerzeichen 
hinzugefügt werden. Hierzu habe ich folgende Funktion:
1
                string s = textBox_BwData.Text;
2
                if (s.Length >= 4)
3
                {
4
                    string temp = Regex.Replace(s, @"(.{4})", "$1 ");
5
                    textBox_BwData.Text = temp;
6
                    textBox_BwData.Select(textBox_BwData.Text.Length, 0);
7
                }
8
                textBox_BwData.SelectionStart = textBox_BwData.Text.Length;
An sich funktioniert die Funktion, jedoch im Zusammenhang mit der 
KeyPress-Event Methode läuft die Sache nicht. Wenn ich Beispielsweise 
AA55 eingebe, wird automatisch ein Leerzeichen hinzugefügt. Nach 
weiteren Eingabe kommt es zu folgender Veränderung: nach den ersten vier 
Zeichen wird wie gewünscht ein Leerzeichen hinzugefügt, nach jeder 
weiteren Eingabe landet ein Leerzeichen "sonstwo" z.B.:
0000                                               1           1 
1           1     22    2     2 3 33 3

Jemand eine Idee, wie man das sauber lösen kann?
#3120626
Lesenswert?

1
        private string formatTextBox(string text)
2
        {
3
            text = text.Replace(" ", "");
4

5
            if(text.Length>2)
6
                for (int i = 2; i < text.Length; i=i+3)
7
                    text = text.Insert(i, " ");
8

9
            return (text);
10
        }
11

12
        private void textBox_TextChanged(object sender, EventArgs e)
13
        {
14
            TextBox textBox = ((TextBox)sender);
15
            textBox.Text = formatTextBox(textBox.Text);
16
            textBox.SelectionStart = textBox.Text.Length;
17
            textBox.SelectionLength = 0;
18
        }

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren