Entwickler-Ecke
WPF / Silverlight - KeyEventArgs bei Space-Taste
Oppi35 - Sa 30.10.10 10:24
Titel: KeyEventArgs bei Space-Taste
Ich möchte in einer Textbox nur Zahlen zulassen. Funktioniert mit dem Keydown-Event auch ganz einfach. Die Eingabe der Space-Taste kann ich leider nicht verhindern.
Wenn ich in einer Test-Messagebox das eingegebene Zeichen abfrage mit
Messagebox.show(e.Key.tostring());
dann wird das jeweilige Zeichen ausgegeben. Nur bei Space kommt scheinbar auch nichts an im KeyDownEvent. Warum nicht?
Wie kann ich das Drücken der Space-Taste entsprechend abfangen. Gibt es weitere Tasten, die nicht im KeyDownEvent behandelt werden?
Vielen Dank für Eure Hilfe.
Moderiert von
Christian S.: Topic aus C# - Die Sprache verschoben am Sa 30.10.2010 um 11:43Moderiert von
Christian S.: Topic aus WinForms verschoben am Sa 30.10.2010 um 13:41
Oppi35 - Sa 30.10.10 12:11
Ein KeyPress Ereignis gibt es in der Text-Box (WPF) nicht. Habe ich auch schon gesucht. Eine numeric-Box ist ne feine Sache, aber mit dem unten gezeichten Code wäre mein Problem ja behoben, wenn eben die Space Taste auch gesendet werden würde:)
Warum löst die Space-Taste kein KeyDownEvent aus?
Hier mein Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| private void tb_PLZ_Eingabe_KeyDownEvent(object sender, KeyEventArgs e) { ObservableCollection<Key> allowedkeys = new ObservableCollection<Key>(); allowedkeys.Add(Key.D0); allowedkeys.Add(Key.D1); allowedkeys.Add(Key.D2); allowedkeys.Add(Key.D3); allowedkeys.Add(Key.D4); allowedkeys.Add(Key.D5); allowedkeys.Add(Key.D6); allowedkeys.Add(Key.D7); allowedkeys.Add(Key.D8); allowedkeys.Add(Key.D9); allowedkeys.Add(Key.Delete); allowedkeys.Add(Key.Back); allowedkeys.Add(Key.NumPad0); allowedkeys.Add(Key.NumPad1); allowedkeys.Add(Key.NumPad2); allowedkeys.Add(Key.NumPad3); allowedkeys.Add(Key.NumPad4); allowedkeys.Add(Key.NumPad5); allowedkeys.Add(Key.NumPad6); allowedkeys.Add(Key.NumPad7); allowedkeys.Add(Key.NumPad8); allowedkeys.Add(Key.NumPad9);
e.Handled = true; foreach (Key key in allowedkeys) { if (e.Key == key) { e.Handled = false; } } } |
Moderiert von
Christian S.: C#-Tags hinzugefügt
Trashkid2000 - Sa 30.10.10 12:58
Hi,
probier mal das PreviewKeyDown-Event! Dort wird die Space-Taste erkannt.
Ansonsten bleibt der Code der gleiche.
LG, Marko
//edit
ich würde die Collection der allowedKeys nicht bei jeder Eingabe eines Buchstabens neu erzeugen
Th69 - Sa 30.10.10 13:30
Hallo Oppi35,
dann hättest du auch besser gleich im WPF-Forum gepostet -)
Und deinen Code hier beim Posten solltest du besser in Code-Tags [ cs ] [ /cs ] (ohne die Leerzeichen) packen...
Oppi35 - Sa 30.10.10 13:50
Vielen Dank Marko, passt jetzt.
Mit der Neuerstellung der Collection ist mir klar. Habe den Code nur direkt aus dem Erstellungsprozess geposted:)
Jetzt werde ich interessehalber[quote] nochmal unter Bubbeling/Tunneling nachlesen, warum die Space Taste anders als die anderen Tasten behandelt wird. Aber wichtig ist erstmal, dass der Code funktioniert.
Also nochmal Vielen Dank.
Gruß
Frank
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!