Textfeld auf Datentyp beschränken
-
Hallo,
ich habe mir eine Windows-Forms gebastelt mit mehreren Textfeldern. Nun möchter ich festlegen, dass man in die Textfeldern nur Zahlen eigeben darf. In VS 6 ging das über die Eigenschaften. Wie mache ich das hier??
Vielen Dank für die Hilfe!
-
In der Framework Version 2.0 gibt es dafür die MaskedTextBox.
-
Sorry, hätte sagen sollen, dass ich das Framwework 1.1 benutze. Was gibt's denn da?
-
Servus,
ich glaube da bleiben dir nicht viele Möglichkeiten übrig. Du könntest z.B. das KeyPressed Event abfangen.
Bsp.:
private void OnTextBoxKeyPressed(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (e.KeyChar != 8) { if (!char.IsNumber(e.KeyChar)) { MessageBoxOptions options = (MessageBoxOptions)0; MessageBox.Show("Dieses Feld erlaubt nur numerische Werte als Eingabe!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button2, options); e.Handled = true; } } }
KeyChar 8 ist BackSpace. Damit man den Rotz auch wieder löschen kann, ohne das eine Fehlermeldung aufpoppt.
mfg
Hellsgore
-
Danke für den Tipp. Habe es so ähnlich gemacht. Fange einfach die System::FormatException und gebe dann eine MessageBox aus.
-
@Hellsgore
Einfügen mittels Copy and Paste ( per Maus und ContextMenü ) ist so immernoch möglich.
-
Uhh....
da haste recht... auf die idee bin ich ja noch garnicht gekommen.Hast du einen lukrativeren Vorschlag?
EDIT:
Ahh Moment.... Man kann aber das TextChanged Event abfangen und überprüfen ob sich der ganze Text in einen Int/etc. pappen lässt. Das wäre auch noch ne Möglickeit..