本文最后更新于 2019年 5月 6号 凌晨 2点 03分,并同步发布于 :
在编写
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—