Entwickler-Ecke

WinForms - Nur vorgegebene Tasten in Textbox zulassen


Rassi - Mo 10.11.08 16:23
Titel: Nur vorgegebene Tasten in Textbox zulassen
Hallo.

Ich möchte eine Fließkommazahl in eine Textbox eingeben lassen.

hier möchte ich nur die Tasten 0 bis 9, das Komma und den Backspace zulassen.

Wie mache ich dass.

Ich habe es über das KeyPress-Event versucht. Hier habe ich die Tasten so gefiltert, dass ich bei ungültigen Zeichen in eine If-Anweisung komme. So und dann?
Hier würde ich gerne das eingegebene Zeichen löschen, aber wie?

Oder gibt es eine bessere Lösung um Fließkommazahlen einzugeben?


Gruß
Rasmus


JüTho - Mo 10.11.08 16:42
Titel: Re: Nur vorgegebene Tasten in Textbox zulassen
Hallo Rasmus,

user profile iconRassi hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe es über das KeyPress-Event versucht.

Passt schon. Je nach Prüfung der Tasten kämen auch KeyDown oder KeyUp in Frage.

user profile iconRassi hat folgendes geschrieben Zum zitierten Posting springen:
Hier habe ich die Tasten so gefiltert, dass ich bei ungültigen Zeichen in eine If-Anweisung komme. So und dann?
Hier würde ich gerne das eingegebene Zeichen löschen, aber wie?

KeyPressEventArgs bietet Handled = true. Außerdem kann KeyChar = #0 festgelegt werden.

user profile iconRassi hat folgendes geschrieben Zum zitierten Posting springen:
Oder gibt es eine bessere Lösung um Fließkommazahlen einzugeben?

MaskedTextBox oder NumericUpDown.

Jürgen


Rassi - Mo 10.11.08 17:12

Hallo.

Danke für die Antwort. Es hat mit Handled = true geklappt.

Ich war schon nahe dran, habe aber Handled = false gesetzt, und dann kann es ja nicht klappen. Wer lesen kann, ist klar im Vorteil.

Da ich noch mit VS2003 arbeite geht die Zuweisung zu KeyChar noch nicht.

MaskedTextBox gibts in VS2003 auch noch nicht, und NumericUpDown ist meines Wissens nur für ganze Zahlen.

Aber der Tip hat mir weiter geholfen. Vielen Dank.

Gruß
Rasmus


JüTho - Mo 10.11.08 17:16

user profile iconRassi hat folgendes geschrieben Zum zitierten Posting springen:
Da ich noch mit VS2003 arbeite geht die Zuweisung zu KeyChar noch nicht.

MaskedTextBox gibts in VS2003 auch noch nicht,

Stimmt, aber das ist ein wichtiger Gesichtspunkt zum Wechseln.

user profile iconRassi hat folgendes geschrieben Zum zitierten Posting springen:
und NumericUpDown ist meines Wissens nur für ganze Zahlen.

Falsch, Du kannst DecimalPlaces benutzen. Aber es ist wegen der Up/Down-Funktionalität i.V.m. Increment nur begrenzt nützlich.

Jürgen