Autor Beitrag
Oppi35
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: Sa 30.10.10 10:24 
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 user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Sa 30.10.2010 um 11:43
Moderiert von user profile iconChristian S.: Topic aus WinForms verschoben am Sa 30.10.2010 um 13:41
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 30.10.10 10:54 
Zeig mal etwas mehr Code.
Und das KeyPress-Ereignis wäre m.E. hierfür besser geeignet.

Evtl. hilft dir aber auch meine numerische TextBox: NumericTextBox (basierend auf dem Windows-Standard-Control) (sofern es dir nur um ganze Zahlen geht)
Oppi35 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: 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:


ausblenden volle Höhe 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 user profile iconChristian S.: C#-Tags hinzugefügt
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: 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