Eingabe auf Zahl oder Leerzeichen überprüfen C# wie?

Adrianos

Grünschnabel
Hallo Jungs,

Ich möchte eine Textbox-Eingabe auf eine Zahl oder Leerzeichen überprüfen. Also wenn es "eine" Zahl oder "eine" Leerzeichen ist soll er auf das nächst Textbox springen. Er soll solange man eine Zahl oder eine Leerzeichen eingegeben hat soll er in der Textbox bleiben(nicht springen).

Das habe ich versucht so zu realisieren:

Code:
        private void textbox1_TextChanged(object sender, EventArgs e)
        {
            TextBox source = sender as TextBox;
            string text = source.Text;

  
            // Allow only characters in tbPCBNumber
             if(source == null) 
             {
                 return;
             }

             if (Regex.IsMatch(text, "^[0-9]")==true) 
             {
                tbPCBNumber3.Focus();
                 return;
             }

             source.TextChanged -= this.textbox1_TextChanged;

             if(source.TextLength == 1) 
             {
                 source.ResetText();
             }
             else 
             {
                 source.ResetText();
                 source.AppendText(text.Substring(0, text.Length-1));
             }
             source.TextChanged += this.textbox1_TextChanged;
          }

Nun wenn ich jetzt auf Regex die Leerzeichen in die eckige Klammer einfüge also \s läuft es nicht mehr. Wo mache ich den Fehler?
 
Hi.

Falsches Forum. C# gehört in den .NET Bereich.

Was heißt denn "es läuft nicht mehr"? Bitte etwas genauer. Fehlermeldung? Exceptions?

Gruß
 
ok werde den Fehler gleich Posten.

Also so sieht der Code aus:

if (Regex.IsMatch(text, "^[0-9\s]") == true)
{
textBox3.Focus();
return;
}

Und das ist der Fehler:
Fehler 1 Nicht erkannte Escapesequenz.
 
Hallo,

der Backslash ( "\" ) hat eine besondere Bedeutung und wird zusammen mit dem nachfolgenden Buchstaben als Steuerzeichen, die sog. Escapesequenz interpretiert. Um das zu verhindern, musst den den Backslash verdoppeln:
Code:
if (Regex.IsMatch(text, "^[0-9\\s]") == true)

Das sind aber eigentlich absolute Basics, die du auch selbst lösen können solltest.

Gruß
MCoder
 
Hey,

du kannst auch alternativ einfach ein @-Zeichen vor den String setzen, so werden dann alle "\" als einfache "\" ohne Funktion interpretiert.

Code:
if (Regex.IsMatch(text, @"^[0-9\s]") == true)

Gruß Hale
 
Zurück