WPF学习笔记——9)键盘输入

WPF事件类型

WPF通常包括下列五种重要的事件类型

1、生命周期事件:在元素被被初始化,从加载到被删除这个生命周期时发生的。

2、鼠标事件:鼠标的操作事件。

3、键盘事件:键盘的操作事件。

4、手写笔事件:手写设备的操作事件。

5、多点触控事件:一个或多个手指在触控屏幕上的操作事件。

键盘输入

当用户按下键盘上的某个键时,一般会顺序触发下列一系列事件:

  • PreviewKeyDown
  • KeyDown
  • PreviewTextInput
  • TextInput
  • PreviewKeyUp
  • KeyUp

我们以一个简单的程序为例。

<Window x:Class="_09.Keyboard_Input.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="KeyPressEvents" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>

        <DockPanel Margin="5">
            <TextBlock Margin="5">请输入:</TextBlock>
            <TextBox Focusable="True"
                     PreviewKeyDown="KeyEvent" 
                     KeyDown="KeyEvent" 
                     PreviewTextInput="TextInput"
                     PreviewKeyUp="KeyEvent"
                     KeyUp="KeyEvent"
                     TextChanged="TextChanged"></TextBox>
        </DockPanel>

        <ListBox Margin="5" Name="ListMessages" Grid.Row="1"></ListBox>
        <Button Margin="5" Content="清除"  Grid.Row="2" HorizontalAlignment="Right" Padding="3" Click="Button_Click"></Button>
    </Grid>
</Window>

然后分别写TextBox的键盘事件处理程序,最后加一个按钮清除功能。

        private void KeyEvent(object sender, KeyEventArgs e)
        {
            string message="Event:" + e.RoutedEvent + "  " + "Key:" + e.Key;
            ListMessages.Items.Add(message);
        }

        private void TextInput(object sender, TextCompositionEventArgs e)
        {
            string message = "Event:" + e.RoutedEvent + "  " + "Text:" + e.Text;
            ListMessages.Items.Add(message);
        }

        private void TextChanged(object sender, TextChangedEventArgs e)
        {
            string message = "Event:" + e.RoutedEvent;
            ListMessages.Items.Add(message);
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            ListMessages.Items.Clear();
        }

 实现效果如下,我们在TextBox中键盘输入字母”t“,可以看到键盘事件的顺序:

猜你喜欢

转载自blog.csdn.net/weixin_39478524/article/details/106300739
今日推荐