Laden...

TextCompositionEventArgs funktioniert nicht richtig

Erstellt von Cuin vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.373 Views
C
Cuin Themenstarter:in
92 Beiträge seit 2010
vor 13 Jahren
TextCompositionEventArgs funktioniert nicht richtig

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...

16.807 Beiträge seit 2008
vor 13 Jahren

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

C
Cuin Themenstarter:in
92 Beiträge seit 2010
vor 13 Jahren

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