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

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


在编写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---

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 3,556评论 1 11
  • jQuery模块 选择器、DOM操作、事件、AJAX与动画 匿名函数自执行 作用:解决命名空间与变量污染的问题 总...
    青青玉立阅读 926评论 0 0
  • 1.从载入EasyUI开始 读者需要到EasyUI官网中下载包含原文件和demo的压缩包,并解压到之前编写的代码目...
    老皮丘阅读 1,837评论 0 6
  • (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...
    凛0_0阅读 1,386评论 0 8
  • 本篇博客源地址 总结: 鼠标事件 1.click与dbclick事件ele.click()ele.click(ha...
    ZombieBrandg阅读 703评论 0 1