<Window x:Class="RoutedEvents.KeyModifiers" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="KeyModifiers" Height="300" Width="300"> <StackPanel Margin="5"> <TextBox KeyDown="KeyEvent"></TextBox> <TextBlock Name="lblInfo"></TextBlock> <Button Click="CheckShift">Check Current Shift State</Button> </StackPanel> </Window> //File:Window.xaml.cs using System; using System.Collections.Generic; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace RoutedEvents { public partial class KeyModifiers : System.Windows.Window { public KeyModifiers() { InitializeComponent(); } private void KeyEvent(object sender, KeyEventArgs e) { lblInfo.Text = "Modifiers: " + e.KeyboardDevice.Modifiers.ToString(); if ((e.KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) { lblInfo.Text += " You held the Control key."; } } private void CheckShift(object sender, RoutedEventArgs e) { if (Keyboard.IsKeyDown(Key.LeftShift)) { lblInfo.Text = "The left Shift is held down."; } else { lblInfo.Text = "The left Shift is not held down."; } } } }