NumericUpDown in Form - leeres Feld verhindern/abfangen
-
Hallo,
ich habe ein NumericUpDown Element auf meiner Form, mit einer MIN-/MAX-Grenze. Der User darf, statt über die Up-/Down-Buttons, seinen Zielwert auch selbst eingeben.
Ich bekomme aber das Problem nicht in den Griff, dass der User den Wert im NumericUpDown löschen, und leer lassen kann. Ich habe einige Tips von Google getestet, ohne Erfolg. Ich kann nach löschen des Feldinhalts auf ein anderes GUI-Element gehen, das Feld bleibt leer.
Ich möchte, dass wenn der User versucht das Feld leer zu lassen, einen Standardwert setzen. Noch besser wäre es, wenn automatisch der letzte gültige Wert eingetragen wird.
Probiert habe ich das:
private void numericUpDown1_Leave(object sender, EventArgs e) { if (string.IsNullOrEmpty(((Control)this.numericUpDown1).Text)) { this.numericUpDown1.Value = 8000; }
private void numericUpDown1_Validating(object sender, CancelEventArgs e) { if (string.IsNullOrEmpty(((Control)this.numericUpDown1).Text)) { this.numericUpDown1.Value = 8000; } }
-
Versuchs mal mit LostFocus. Nimm am besten string.IsNullOrWhitespace - falls der Nutzer Leerzeichen eingab.
-
NumericUpDown hat kein Ereignis "LostFocus" o.ä.
Und das bool "IsNullOrWHiteSpace" kennt mein VS2008 Express auch nicht.
-
BonoBububob123 schrieb:
NumericUpDown hat kein Ereignis "LostFocus" o.ä.
Doch hat es: NumericUpDown Events
BonoBububob123 schrieb:
Und das bool "IsNullOrWHiteSpace" kennt mein VS2008 Express auch nicht.
Jo, die ist erst ab dem 4.0er .net-Framework vorhanden.
-
Feedback:
Es liegt gar nicht am Ereignis, sondern an:this.numericUpDown1.Value = 8000;
und das muss ersetzt werden durch:
((Control)this.numericUpDown1).Text = "" + this.numericUpDown1.Value;
So wird auch immer der zuletzt gültige, eingetragene Wert eingetragen.