Forum: PC-Programmierung C# TextBox Angaben on the fly parsen


von Mne Pohuy (Gast)


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?

von Mne Pohuy (Gast)


Lesenswert?

Ok, ich sehe meinen Fehler, die Regexprüfung wird ja vom Neuen auf den 
String angewandt. Ich muss die letzte Position vom Leerzeichen abfragen 
und von da an die vier Zeichen zählen.

von A. V. (kra5h)


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
        }

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.