Hallo zusammen,
wahrscheinlich gibt es schon Dutzende von spezialisierten Textboxen – trotzdem habe ich eine eigene gemacht.
NumericTextBox -so heißt das Teil- hat einige außergewöhnliche Eigenschaften.
Der ToolTipString wird als Format String behandelt und kann bis zu vier Parameter im Text einfügen.
Beispiel:
„Eingabe des Alters in Jahren.{0}Zulässige Eingabezeichen sind "{1}".{0}Der erlaubte Wertebereich ist {2} bis {3}“.
{0} bewirkt einen Zeilenumbruch in ToolTip Fenster.
{1} gibt den String AllowedCharacters aus.
{2} gibt den Wert MinValue aus.
{3} gibt den Wert MaxValue aus.
Das kleine Demoprojekt zeigt wie einfach die zentrale Validierung geht. Egal ob nur eine TextBox oder 100 TextBoxen, mit 7 Zeilen wird alles erschlagen.
private void ValueLimitError(object sender, NumericTextBoxControl.ValueLimitEventArgs e)
{
MessageBox.Show("Ungültiger Wertebereich. Zulässige Werte sind " +
e.MinValue.ToString() + " bis " + e.MaxValue.ToString(),
"Fehler in Eigabefeld: " + (sender as TextBox).Name.ToString());
(sender as TextBox).Focus();
}
Genau so einfach funktioniert auch die Behandlung von Konvertierungsfehlern.
private void ConversionError(object sender, EventArgs e)
{
MessageBox.Show("Konvertierungsfehler", "Fehler in Eigabefeld: " +
(sender as TextBox).Name.ToString());
(sender as TextBox).Focus();
}
Viel Erfolg damit
byte_schubser
Hallo byte_schubser,
wahrscheinlich gibt es schon Dutzende von spezialisierten Textboxen
bestimmt, aber dein Projekt hat ein paar nette Features, die es sicher nicht überall gibt. Allerdings auch noch zumindest einen Fehler. Per Zwischenablage lässt sich beliebiger Text einfügen. Es ist grundsätzlich problematisch zu versuchen, eingabeseitig falsche Eingaben abzufragen. Zuverlässig bekommt man es nur mit TextChanged hin. Siehe dazu [FAQ] In einer TextBox nur bestimmte Zeichen/Eingaben zulassen.
herbivore
Hallo herbivore,
danke für Deinen Hinweis - den Artikel habe ich noch nicht gekannt. An die Zwischenablage habe ich auch nicht gedacht.
Bei Gelegenheit werde ich mal die Methode aus Deinem Artikel integrieren und das Projekt hier aktualisieren.
Grüße
byte_schubser