Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
nur decimal werte erlauben/validieren in einem Textbox
sindibad
myCSharp.de - Member



Dabei seit:
Beiträge: 108

Themenstarter:

nur decimal werte erlauben/validieren in einem Textbox

beantworten | zitieren | melden

Hallo,
ich habe ein paar Textboxen für die Eingabe von Decimal Werte z.B. 3, 4 oder mit Decimal Punkt z.B. 3.67 (immer zwei Stellen nach em Komma).

wie kann ich am besten realisieren, dass nur gültige Werte eingegeben werden bzw validieren?
ist es eine gute Lösung das eingegebene Komma , durch Punkt . zu ersetzen?
ich habe versucht StringFormat zu benutzen aber 1,1 wird als 11 interpretiert


<TextBox Grid.Row="4" Grid.Column="1"
                         Text="{Binding Path=PrintingData.Start, StringFormat=0{0.0}, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
                         Height="26" HorizontalAlignment="Right" Name="textBoxStart" VerticalAlignment="Top" Width="65"
                PreviewTextInput="textBoxStart_PreviewTextInput" Margin="0,0,47,0" />


public decimal Start
        {
            get { return _Start; }
            set
            {
                if (_Start != value)
                {
                    _Start = value;

                    // update end value for non marker
                    if (_IsMarker == false)
                        End = _Start + _Length;
                    else
                        End = _Start + _Length - 1;

                    OnPropertyChanged("Start");
                }
            }
        }
 private string ValidateStart()
        {
            // avoid problem because of decimal point . or , (german or englisch system)
            var nfi = new NumberFormatInfo();
            nfi.NumberDecimalSeparator = ".";
            var p = Start.ToString(nfi);

            if (Start < 0) return "Start can not be a negative value!";

            if (_IsMarker == false)
            {
                // checked Format xxxxxxx.x
                var regex = new Regex(@"^\d+(\.\d{1})?$");
                if (regex.IsMatch(p) == false)
                    return "Start has wrong format!";
                return null;
            }
....
}

private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15528
Herkunft: BW

beantworten | zitieren | melden

In WPF und mit MVVM macht man das üblicherweise mit ValidationRules.
Siehe Binding Validation in den Docs: How to: Implement Binding Validation - WPF .NET Framework
private Nachricht | Beiträge des Benutzers