本文最后更新于 2019年 4月 20号 下午 1点 54分,并同步发布于 :
在编写
WPF
桌面应用程序时, 可能需要限制TextBox
(输入框)只能输入数字或只能英文字符之类的情况
首先, WPF
中有关键盘输入的事件有 :
-
KeyDown
和KeyUp
事件(冒泡路由事件)这两个事件会被
TextBox
元素挂起 -
PreviewKeyDown
和PreviewKeyUp
事件(隧道路由事件)当按键弹起时才会触发
PreviewKeyUp
事件(这时内容已经输入到TextBox
元素中) -
TextInput
事件(冒泡路由事件)此事件会被
TextBox
元素挂起 -
PreviewTextInput
事件(隧道路由事件) - TextBox类新增的
TextChanged
事件(普通事件)当
TextBox
的内容改变时才会触发此事件, 这时内容已经输入到TextBox
元素中
现在可用的事件有: PreviewKeyDown
和PreviewTextInput
。(事件触发顺序: PreviewKeyDown >>> PreviewTextInput
)
PreviewTextInput
事件的参数提供了Text属性, 可以在发生此事件时进行验证输入。比较方便, 也不用编写更低级的按键判断。
示例 (限制只能输入数字):
将事件的
Handled
属性设置为ture
, 阻止事件继续往下传递
但是! 当按下空格键时, 会直接绕过PreviewTextInput
事件 !
所以需要在PreviewKeyDown
事件中阻止Space
(空格键)的输入。
示例代码 :
---END---
网友评论