Mega Code Archive

 
Categories / C# / WPF
 

Window Preview Key Events

<Window x:Class="RoutedEvents.TunneledKeyPress"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     Title="TunneledKeyPress" Height="400" Width="400" PreviewKeyDown="SomeKeyPressed" >   <StackPanel>     <Label Margin="5" BorderBrush="Black" BorderThickness="1" HorizontalContentAlignment="Stretch"            PreviewKeyDown="SomeKeyPressed">       <StackPanel PreviewKeyDown="SomeKeyPressed">         <TextBlock Margin="3" HorizontalAlignment="Center" PreviewKeyDown="SomeKeyPressed">           Image and text label         </TextBlock>         <Image Source="c:\image.jpg" Stretch="None" PreviewKeyDown="SomeKeyPressed"/>         <DockPanel Margin="10" PreviewKeyDown="SomeKeyPressed">            <TextBlock Margin="3" PreviewKeyDown="SomeKeyPressed">Type here:</TextBlock>           <TextBox PreviewKeyDown="SomeKeyPressed" KeyDown="SomeKeyPressed"></TextBox>         </DockPanel>       </StackPanel>     </Label>     <ListBox Margin="5" Name="lstMessages"></ListBox>     <CheckBox Margin="5" Name="chkHandle">Handle first event</CheckBox>     <Button Click="cmdClear_Click" HorizontalAlignment="Right" Margin="5" Padding="3">Clear List</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 TunneledKeyPress : System.Windows.Window     {         public TunneledKeyPress()         {             InitializeComponent();         }         protected int eventCounter = 0;         private void SomeKeyPressed(object sender, RoutedEventArgs e)         {             eventCounter++;             string message = "#" + eventCounter.ToString() + ":\r\n" +                 " Sender: " + sender.ToString() + "\r\n" +                 " Source: " + e.Source + "\r\n" +                 " Original Source: " + e.OriginalSource + "\r\n" +                 " Event: " + e.RoutedEvent;             lstMessages.Items.Add(message);             e.Handled = (bool)chkHandle.IsChecked;         }         private void cmdClear_Click(object sender, RoutedEventArgs e)         {             eventCounter = 0;             lstMessages.Items.Clear();         }     } }