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

本文详细介绍了WPF中键盘事件的触发顺序,包括PreviewKeyDown、KeyDown、PreviewTextInput、TextInput、PreviewKeyUp和KeyUp等事件,并通过一个示例程序展示了如何处理这些事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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“,可以看到键盘事件的顺序:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值