Hacke kann ich sicherstellen, dass ein Benutzer nur alphanumerische und Leerzeichen in einem Textfeld auf KeyDown-Ereignis in WPF eingeben kann? Keine Sonderzeichen erlaubt.Textbox enthält nur Buchstaben, Zahlen und Leerzeichen
Antwort
Überprüfen Sie das Ereignis KeyDown der Textbox und tun, wie
// If escape is presses, then close the window.
if(Key.Escape == e.Key)
{
this.Close();
}
// Allow alphanumeric and space.
if(e.Key >= Key.D0 && e.Key <= Key.D9 ||
e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9 ||
e.Key >= Key.A && e.Key <= Key.Z ||
e.Key == Key.Space)
{
e.Handled = false;
}
else
{
e.Handled = true;
}
// If tab is presses, then the focus must go to the
// next control.
if(e.Key == Key.Tab)
{
e.Handled = false;
}
Hope this helfen ......
Der KeyDown Event-Handler ist möglicherweise nicht der beste Ort, um dies zu tun, da das Zeichen bereits der TextBox hinzugefügt wurde. Sie könnten auf das PreviewKeyDown-Ereignis reagieren und verhindern, dass das Ereignis fortgesetzt wird. Dies kann jedoch unbekannte Konsequenzen haben.
Ein Ansatz wäre, eine ValidationRule an die TextBox anzuhängen. Obwohl dies den Benutzer nicht daran hindern würde, den Charakter einzugeben, würde er sie darüber informieren, dass es ihnen nicht erlaubt ist. Dazu müssen Sie aus System.Windows.Controls.ValidationRule ableiten, so etwas zu bekommen:
public class MyValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
// Logic to determine if the TextBox contains a valid string goes here
// Maybe a reg ex that only matches alphanumerics and spaces
if(isValidText)
{
return ValidationResult.ValidResult;
}
else
{
return new ValidationResult(false, "You should only enter an alphanumeric character or space");
}
}
}
Und es dann so in XAML verwenden:
<TextBox>
<TextBox.Text>
<Binding Path="MyString"
UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<myns:MyValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Jedes Mal, wenn der Benutzer gibt ein ungültiges Zeichen Sie erhalten die Fehlermeldung. Hoffe, das ist von Nutzen.
Sie auch die Preview Ereignis der Textbox verwenden können.
<TextBox Name="txtName" PreviewTextInput="txtName_PreviewTextInput"/>
und die folgenden in Ihrem Code hinter hinzufügen:
private void txtName_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
foreach (char c in e.Text)
{
if (!char.IsLetterOrDigit(c))
{
e.Handled = true;
break;
}
}
}
Ich denke DONot sein eine gute Praxis KeyDown zu verwenden. Der Nachteil ist, dass Sie die Rücktaste, löschen und Tab-Tasten auch behandeln müssen.
Statt: Griff Preview
private void OnPreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (!IsMatch(e.Text)) e.Handled = true;
}
private bool IsMatch(string input)
{
return Regex.IsMatch(input, MyRegexString);
}
dann muss PasteHandler kümmern: add in Konstruktor folgende Zeile.
DataObject.AddPastingHandler(TargetTextBoxName, PasteHandler);
private void PasteHandler(object sender, DataObjectPastingEventArgs e)
{
if (!e.DataObject.GetDataPresent(typeof(string))) return;
// Allow pasting only numeric
var pasteText = e.DataObject.GetData(typeof(string)) as string;
if (!IsMatch(pasteText))
{
e.CancelCommand();
}
}
Ihre regex wird "^ [a-zA-Z0-9]" – kkk
- 1. Htaccess, Buchstaben, Zahlen und Leerzeichen
- 2. Bestätigen: Nur Buchstaben, Zahlen und -
- 3. Textbox nur Buchstaben zulassen
- 4. Überprüfen NSString enthält beide Buchstaben und Zahlen
- 5. PHP preg_match, um nur Zahlen, Leerzeichen '+' und '-'
- 6. Leerzeichen zwischen Zahlen und Buchstaben im Währungsformat einfügen
- 7. Wie kann der Benutzer nur Zahlen und Buchstaben eingeben?
- 8. WPF TextBox und Leerzeichen
- 9. einen Zeichenvektor in R Sortierung, die Buchstaben und Zahlen enthält
- 10. Regex für Buchstaben und keine Leerzeichen
- 11. php erlauben nur Buchstaben, Zahlen, Leerzeichen und spezifische Symbole mit Pregmatch
- 12. Regulärer Ausdruck: Erlaube Buchstaben, Zahlen und Leerzeichen (mit mindestens einem Buchstaben oder einer Zahl)
- 13. RegEx, um Buchstaben Zahlen und Leerzeichen, aber nicht zwei Leerzeichen hintereinander zu erlauben
- 14. Nur Buchstaben und Leerzeichen zulassen - Jquery-Validierungs-Plugin
- 15. Abstand zwischen Buchstaben und Zahlen
- 16. Indy HTTP nur Zahlen Senden und hält an Buchstaben
- 17. Überprüfen, ob eine Zeichenfolge nur Buchstaben, Ziffern und Unterstriche enthält
- 18. Regulärer Ausdruck - beginnend und endend mit einem Buchstaben, akzeptiert nur Buchstaben, Zahlen und _
- 19. Leerzeichen zwischen Zahlen hinzufügen?
- 20. Verbot Buchstaben eingeben textBox
- 21. Wie nur Zahlen zulassen und ein Minus „-“ in einer Textbox
- 22. Inkrementieren einer Zeichenfolge mit Buchstaben und Zahlen
- 23. Entfernen von Leerzeichen zwischen Buchstaben und doppelten Leerzeichen zwischen Wörtern
- 24. Array enthält nur Zahlen in PHP
- 25. Wie kann ich prüfen, ob eine Zeichenfolge nur Buchstaben enthält?
- 26. JS nur alphanumerisch und Leerzeichen bei Tasteneingabe
- 27. Konvertieren Zahlen Buchstaben
- 28. SQL Oracle Sortierung String (Zahlen) und (Buchstaben mit Zahlen)
- 29. konvertieren Buchstaben zu Zahlen
- 30. Regex, die nur Zahlen und einige Zeichen enthält
BTW, die Signatur für den Handler ist: private void OnKeyDownHandler (object sender, KeyEventArgs e) – Jeff