Hallo,
ich habe folgendes Problem. Ich möchte einem Benutzer verbieten in einer Textbox unerlaubte Zeichen einzugeben. Dazu habe ich folgendes gemacht:
private void TextBoxName_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
char[] chararray = e.Text.ToCharArray();
foreach (char c in chararray)
{
if (!char.IsLetterOrDigit(c) && c != '_')
e.Handled = true;
}
}
private void TextBoxName_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space)
e.Handled = true;
}
Das funktioniert soweit auch ganz gut, bloss wird das Drücken der Leertaste nicht erkannt. Der Benutzer kann also beliebig viele leerzeichen machen, obwohl das eigentlich nicht funktionieren sollte. Die Events werden beim drücken der leertaste auch garnicht aufgerufen... hat jemand eine Idee was ich da machen könnte?
mfg Cuin
[EDIT]Ups, musste einfach nur das Event KeyDown durch PreviewKeyDown ersetzen.^^ Allerdings frage ich mich trotzdem, wieso "TextBoxName_PreviewTextInput" beim drücken der Leertaste nicht gefeuert wird...
Weil Space ein besonderes Zeichen ist und daher gewollt hier keinen Event feuert.
Ein ähnliches Problem gab es bereits hier In Textbox nur Zahlen zulassen
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Oh super! Deine Version funktioniert einwandfrei 😃
In meiner Version wird nämlich Paste garnicht abgefangen... gut das du es noch erwähnt hattest!^^
mfg Cuin