#636 – 持续按住按键会多次触发键盘事件(Keyboard Events that Fire When A Key Is Held Down)
来源:互联网 发布:人员去向软件 编辑:程序博客网 时间:2024/06/05 00:20
在Windows系统中,持续按住一个按键,相当于重复按下多次这个键。而且PreviewKeyDown, KeyDown 和 PreviewTextInput 事件也会重复的触发。
你可以通过KeyEventArgs.IsRepeat 属性判断事件是第一次发生,还是持续按住按键重复发生的。
加入我们在一个获得键盘输入焦点的TextBox 上持续按下“a”键,并获得了三次输入,那么我们获得的事件顺序如下:
-PreviewKeyDown, Key = A, IsRepeat = False
-KeyDown, Key = A, IsRepeat = False
-PreviewTextInput, Text = a
-(TextBox 显示一个“a”)
-PreviewKeyDown, Key = A, IsRepeat = True
-KeyDown, Key = A, IsRepeat = True
-PreviewTextInput, Text = a
-(TextBox 显示“aa”)
-PreviewKeyDown, Key = A, IsRepeat = True
-KeyDown, Key = A, IsRepeat = True
-PreviewTextInput, Text = a
-(TextBox 显示“aaa”)
-PreviewKeyUp, Key = A, IsRepeat = False
-KeyUp, Key = A, IsRepeat = False
如果想要防止这钟持续按下会多次触发事件的情况,可以在IsRepeat 属性为true的时候设置事件的Handled 属性为true。
例如,在XAM注册事件:
<TextBox HorizontalAlignment="Center" Width="150" Margin="10" PreviewKeyDown="TextBox_PreviewKeyDown" />
然后事件处理函数代码中加上:
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e){ e.Handled = e.IsRepeat;}
原文地址:https://wpf.2000things.com/2012/08/30/636-keyboard-events-that-fire-when-a-key-is-held-down/
- #636 – 持续按住按键会多次触发键盘事件(Keyboard Events that Fire When A Key Is Held Down)
- #628 – 当使用ALT键的时候按键事件序列(Key Up/Down Sequence When Using ALT Key)
- 多次注册事件会导致一个事件被触发多次
- onKeyUp 事件 在键盘按键被松开时触发
- mouseover多次触发事件
- mui.fire()触发自定义事件
- JS触发按键事件
- FileSystemWatcher事件多次触发解决办法
- click事件多次触发 jquery
- jQuery click事件多次触发
- js键盘触发事件
- 键盘的触发事件
- 键盘按键点击事件
- qml键盘按键事件
- 检测键盘按键事件
- 键盘按键事件
- jquery在某种情况下绑定click事件会触发多次click的解决方案
- jQuery给一个元素绑定事件前,一次点击会多次触发的问题所在
- 开博客啦
- Ubuntu WPS字体缺失配置
- 函数指针的调用
- Android学习笔记(二)Activiy学习——界面传值
- jdk8的datetime时间函数使用示例
- #636 – 持续按住按键会多次触发键盘事件(Keyboard Events that Fire When A Key Is Held Down)
- Linux 编程之 VIM 详细配置
- 数据库之-redis
- consul资料
- HDU - 2444 二分图判定 + 最大匹配
- Maven - 构建与命令
- tegra tx1 kernel start up
- Android 百分比布局
- Android setAlpha使用时导致其他界面变透明解决方案