Hallo,
ich möchte das in einer Textbox nur die Eingabe von Decimal erlaubt ist.
Folgende sollen erlaubt sein:
-12,2
-12.2
12
32.5
23,4
Nicht erlaubt sollen nicht Nummern, außer Minus am Anfang und einem Punkt oder Komma zwischen den Zahlen.
Folgendes erlaubt das Minuszeichen, Komma oder Punkt irgendwo im Text und auch mehrmals.
Zudem werden auch Leerzeichen erlaubt.
private void NumberMinusValidationTextBox(object sender, TextCompositionEventArgs e)
{
Regex regex = new Regex(@"[^-0-9,\.]+");
e.Handled = regex.IsMatch(e.Text);
}
Hat da wer ein Snippet was auf meinen Anforderungen passt?
Danke im Voraus.
Gruß
Hi,
schau dir mal das Behavior auf folgendem Link an:
https://stackoverflow.com/questions/16914224/wpf-textbox-to-enter-decimal-values
Das sollte das ja ziemlich elegant lösen.
Zu deiner Vorgehensweise - warum Regex, wenn du direkt decimal.TryParse verwenden könntest?
LG
Hallo,
ja, warum eigentlich. Weil wenn der Benutzer am Anfang nur das Minus eingibt er das dann nicht zulässt. Ist ja klar.
Ich habe es nun so gelöst:
private void NumberMinusValidationTextBox(object sender, TextCompositionEventArgs e)
{
if((sender as TextBox).Text.Equals("") && e.Text.Equals("-"))
{
e.Handled = false;
return;
}
decimal result;
e.Handled = !decimal.TryParse((sender as TextBox).Text + e.Text, out result);
}
Danke.
Gruß
Ist das mit dem Minus überhaupt notwendig?
private void NumberMinusValidationTextBox(object sender, TextCompositionEventArgs e)
{
TextBox tb = sender as TextBox;
if( tb == null ) return;
decimal d;
e.Handled = !decimal.TryParse( tb.Text + e.Text, out d);
}
Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen... 😄
führe doch einfach eine Konvertierung in eine Zahl durch, bspw. mit (Convert.ToDouble()
dann kannst du mit if checken, ob dabei ein Fehler auftritt oder nicht...
OO gibts seit Platon - hatte der auch C#?
CWolle, das hat ThomasE. bereits direkt über Deinem Beitrag mit der besseren Variante TryParse bereits gesagt.
Für Convert.ToXyz gibt es fast keine Berechtigung, denn Convert wirft Exceptions und ist mit if nicht kombinierbar 😃
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code