Laden...

Währungsfomat TextBox bzw Zeichen unterbinden?

Erstellt von ZeroQool vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.266 Views
Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 17 Jahren
Währungsfomat TextBox bzw Zeichen unterbinden?

Hallo, ich habe die Suche bereits benutzt u nichts passendes gefunden. Google ebenfalls erfolglos.

Ich habe eine TextBox in der ich einen Betrag eingeben will. Über


private void txtB_AuktionStartpreis_KeyPress(object sender, KeyPressEventArgs e)
    {
      if (!('0' <= e.KeyChar && e.KeyChar <= '9' || e.KeyChar == ',')) e.Handled = true;
    }

habe ich die Eingabe nur auf Zahlen u "Komma" begrenzt. Funktioniert alles wunderbar, aber was ist wenn der User zB

10,00,22 durch ein Versehen eingibt. Wie kann ich unterbinden, dass man 2 Kommas eingeben kann. Hat jemand einen Ansatz oder einen Snipet? Wäre echt klasse. big thx

S
506 Beiträge seit 2006
vor 17 Jahren

wenn der Benutzer was falsches eingibt, bekommst beim parsen halt Exception.
Und dann kannste den benutzer ja nochma neu was einlesen lassen.

also:


try
{
  double.Parse(textBox.Text)
}
catch(FormatException)
{
}

alternative könntest du auch TryParse benutzen...

B
1.529 Beiträge seit 2006
vor 17 Jahren

Oder noch alternativer nimmst du ein NumericUpDown-Control und bist alle Sorgen diesbezüglich los...

I
39 Beiträge seit 2006
vor 17 Jahren

Moin

vielleicht hilft dir ja die maskedTextBox weiter

Z
ZeroQool Themenstarter:in
322 Beiträge seit 2006
vor 17 Jahren

@ Stu42
In welches Ereignis deiner Meinung nach?

@Borg

keine schlechte Idee. Gibt es auch die Möglichkeit die beiden Pfeile zu entfernen? Sieht ein wenig blöd aus.

@ingo

Bei MaskedTextBox ist es blöd, dass ich eine bestimmte länge haben muss

zB ######,##

also man muss alles ausfüllen. ist leider nicht so das Wahre.

J
3.331 Beiträge seit 2006
vor 17 Jahren

Wer die NET-Doku durchlesen will, kann auch selbst Antworten auf seine Fragen finden:

Original von ZeroQool
@Borg
keine schlechte Idee. Gibt es auch die Möglichkeit die beiden Pfeile zu entfernen? Sieht ein wenig blöd aus.

@ingo
Bei MaskedTextBox ist es blöd, dass ich eine bestimmte länge haben muss

UpDownBase.AutoScrollMargin-Eigenschaft
... ist nicht für die direkte Verwendung in Code bestimmt.
Ruft die Größe des AutoBildlaufrandes ab oder legt diese fest. DropDownStyle o.ä. gibt es offensichtlich wirklich nicht.

Aber ist dieser Hinweis an den Nutzer nicht hilfreich, dass er mit den Cursortasten Werte verändern kann?!

MaskedTextBox.Mask-Eigenschaft
0 = Ziffer, erforderlich
9 = Ziffer oder Leerzeichen, optional.

= Ziffer oder Leerzeichen, optional.

Was willst Du mehr?

Jürgen

I
39 Beiträge seit 2006
vor 17 Jahren

naja aber die maskedTextBox ist in der hinsicht nicht optimal, weil man dort nur eine begrenzte anzahl von zahlen definieren kann.
ich hab die maskedTextBox auch noch nie benutzt aber auf den ersten blick sieht es jedenfalls so aus.