#204 – Detecting Key Presses in a WPF Window
February 1, 2011 Leave a comment
You can detect key presses in a class that derives from Window by overriding the OnKeyDown and OnKeyUp methods (which in turn fire the KeyDown and KeyUp events).
These key down/up methods are invoked in addition to any control that has focus and might also provide key down/up methods.
For example, a TextBox also has KeyDown and KeyUp events that are fired. If a user presses a key while a TextBox has focus, the sequence of events is:
- KeyDown in TextBox
- KeyDown in Window
- KeyUp in TextBox
- KeyUp in Window
Here’s an example:
public partial class MainWindow : Window { private static Key[] vowels = { Key.A, Key.E, Key.I, Key.O, Key.U }; protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); if ((vowels.Contains(e.Key)) && (!e.IsRepeat)) lblVowels.Content = lblVowels.Content + e.Key.ToString(); } protected override void OnKeyUp(KeyEventArgs e) { base.OnKeyUp(e); if (vowels.Contains(e.Key)) lblVowels.Content = lblVowels.Content + ","; }