Diese Frage wahrscheinlich gefragt wurde, und eine Million Mal auf jedem denkbaren Programmierung Forum beantwortet. Jede gegebene Antwort unterscheidet sich von den angegebenen Anforderungen.
Da Sie eine MaskedTextBox
verwenden, stehen Ihnen zusätzliche Validierungsfunktionen zur Verfügung und müssen nicht wirklich mit Tastaturdrücken umgehen. Sie können die Mask-Eigenschaft einfach auf "L" (Zeichen erforderlich) oder "?" (optionale Zeichen). Um dem Benutzer eine Rückmeldung zu geben, dass die Eingabe nicht akzeptabel ist, können Sie die Eigenschaft BeepOnError
verwenden oder eine QuickInfo hinzufügen, um die Fehlermeldung anzuzeigen. Dieser Feedback-Mechanismus sollte im MaskedInputRejected
Event-Handler implementiert werden.
Das Steuerelement MaskedTextBox
bietet eine ValidatingType
-Eigenschaft zum Überprüfen der Eingabe, die die Anforderungen der Maske erfüllt, aber möglicherweise nicht den richtigen Datentyp hat. Das Ereignis TypeValidationCompleted
wird nach dieser Typvalidierung ausgelöst, und Sie können damit die Ergebnisse ermitteln.
Wenn Sie noch mit Tastendruckereignissen umgehen müssen, lesen Sie weiter ...!
Die Methode, die ich in Ihrem Fall empfehlen würde, ist, dass anstatt KeyDown
Ereignis zu behandeln (Sie brauchen angeblich keine erweiterte Schlüsselhandling-Fähigkeit) oder mit einem Regex Input (ehrlich gesagt, Overkill) anzupassen, würde ich einfach die gebaut verwenden Eigenschaften der Char-Struktur.
private void maskedTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
Char pressedKey = e.KeyChar;
if (Char.IsLetter(pressedKey) || Char.IsSeparator(pressedKey) || Char.IsPunctuation(pressedKey))
{
// Allow input.
e.Handled = false
}
else
// Stop the character from being entered into the control since not a letter, nor punctuation, nor a space.
e.Handled = true;
}
}
Beachten Sie, dass dieser Ausschnitt können Sie punctutation und Separator-Tasten als auch behandeln.
könnte Ihre Formatierung beheben möchten. –