<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<DockPanel Margin="5">
<TextBlock Margin="3" >
Type here:
</TextBlock>
<TextBox PreviewKeyDown="KeyEvent" KeyDown="KeyEvent"
PreviewKeyUp="KeyEvent" KeyUp="KeyEvent"
PreviewTextInput="TextInput"
TextChanged="TextChanged"></TextBox>
</DockPanel>
<ListBox Margin="5" Name="lstMessages" Grid.Row="1"></ListBox>
<CheckBox Margin="5" Name="chkIgnoreRepeat" Grid.Row="2">Ignore Repeated Keys</CheckBox>
<Button Click="cmdClear_Click" Grid.Row="3" HorizontalAlignment="Right" Margin="5" Padding="3">Clear List</Button>
</Grid>
private void KeyEvent(object sender, KeyEventArgs e)
{
if ((bool)chkIgnoreRepeat.IsChecked && e.IsRepeat) return;
string message = //"At: " + e.Timestamp.ToString() +
"Event: " + e.RoutedEvent + " " +
" Key: " + e.Key;
lstMessages.Items.Add(message);
}
private void TextInput(object sender, TextCompositionEventArgs e)
{
string message = //"At: " + e.Timestamp.ToString() +
"Event: " + e.RoutedEvent + " " +
" Text: " + e.Text;
lstMessages.Items.Add(message);
}
private void TextChanged(object sender, TextChangedEventArgs e)
{
string message =
"Event: " + e.RoutedEvent;
lstMessages.Items.Add(message);
}
private void cmdClear_Click(object sender, RoutedEventArgs e)
{
lstMessages.Items.Clear();
}