『WPF』TextBox元素过滤键盘输入

本文最后更新于 2019年 4月 20号 下午 1点 54分,并同步发布于 :

  • —— 创作你的创作
  • CSDN —— 专业 IT 技术社区
  • www.tobinary.art —— 我的博客

在编写WPF桌面应用程序时, 可能需要限制TextBox(输入框)只能输入数字或只能英文字符之类的情况


首先, WPF中有关键盘输入的事件有 :

  • KeyDownKeyUp事件(冒泡路由事件)

    这两个事件会被TextBox元素挂起

  • PreviewKeyDownPreviewKeyUp事件(隧道路由事件)

    当按键弹起时才会触发PreviewKeyUp事件(这时内容已经输入到TextBox元素中)

  • TextInput事件(冒泡路由事件)

    此事件会被TextBox元素挂起

  • PreviewTextInput事件(隧道路由事件)
  • TextBox类新增的TextChanged事件(普通事件)

    TextBox的内容改变时才会触发此事件, 这时内容已经输入到TextBox元素中

现在可用的事件有: PreviewKeyDownPreviewTextInput。(事件触发顺序: PreviewKeyDown >>> PreviewTextInput)
PreviewTextInput事件的参数提供了Text属性, 可以在发生此事件时进行验证输入。比较方便, 也不用编写更低级的按键判断。


示例 (限制只能输入数字):

将事件的Handled属性设置为ture, 阻止事件继续往下传递

但是! 当按下空格键时, 会直接绕过PreviewTextInput事件 !

所以需要在PreviewKeyDown事件中阻止Space(空格键)的输入。
示例代码 :


---END---

你可能感兴趣的:(『WPF』TextBox元素过滤键盘输入)