最近修改的一个需求要求捕获键盘输入的 Text,包括各种标点符号。

最开始想到的是 PreviewKeyDown 或者 PreviewKeyUp 这样的键盘事件。

但是这两个事件的对象 KeyEventArgs 不够用,得依靠判断 Key 来判断输入了什么,然后再根据判断写死一个相应键位的 Text 来获取数据。

如组合键获取 乘号键 需要用到 Shift + 8(数字键盘那的乘号键是 Key.Multiply ,而需要在主键盘位获取则需要用到组合键)

private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{if(e.KeyStates == Keyboard.GetKeyStates(Key.D8) && Keyboard.Modifiers == ModifierKeys.Shift){var input = "*";}
}

这种办法既不友好且需要用到其他标点符号时还得另外加 if 条件,而且会发生 Key 冲突的问题,如上你输入完 乘号键 以后可能还会多加一个“8”,由于 Key.D8 的原因

随后花了点时间找了下国外博客,然后发现了这个文章(引用1),其实文章内的解决方案博客园也能找到几篇,但是不详细一笔带过。

这是我根据文章内写的代码

XAML:

<Window x:Class="Dome.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"PreviewTextInput="Window_PreviewTextInput"Height="400" Width="600"MinWidth="600">
</Window>

C#:

private void Window_PreviewTextInput(object sender, TextCompositionEventArgs e)
{var input = e.Text;
}

引用

http://stackoverflow.com/questions/2924928/wpf-previewkeydown-event-and-underscore-char

WPF 捕获键盘输入事件相关推荐

  1. java keyboard.press_用来捕获键盘输入的keypress.js介绍

    keypress.js是一个捕获键盘输入的JavaScript库,它简单易用,轻量级的压缩版本只有9kB左右,并且没有依赖其他JavaScript库. 我们通常用键盘事件来监听keydown和keyu ...

  2. Keypress - 捕获键盘输入的JavaScript库

    Keypress 是一个强大的 JavaScript 库,用于捕获键盘输入.这是一个有非常特殊的功能的输入捕获库,它是很容易掌握和使用,并且不依赖第三方库.在网站开发中,经常会碰到需要处理键盘输入的场 ...

  3. WPF经典教程--键盘输入事件, 鼠标输入事件, 焦点处理

    一.键盘和键盘事件 WPF提供了一个基本的键盘类(System.Input.Keyboard类),该类提供键盘相关的事件,方法和属性,以提供有关键盘状态的信息.键盘事件也由诸如UIElement XA ...

  4. python监听键盘输入 linux_Linux下使用Python捕获键盘输入

    在Linux下如何用Python监控键盘记录 思路 在上篇已经说到如何使用Python获取/dev/input目录下event对应的设备的名字.那么我们可以知道设备的名字,就可以通过名字知道哪些eve ...

  5. Java模拟鼠标键盘输入事件 --- Robot 类

    本文链接: http://blog.csdn.net/xietansheng/article/details/78453672 Java Swing 图形界面开发(目录) 官方JavaDocsApi: ...

  6. Linux检测鼠标输入和键盘输入事件

    select实现IO多路复用 int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct time ...

  7. js简单的设置快捷键,hotkeys捕获键盘键和组合键的输入

    设置快捷键 这是一个强健的 Javascript 库用于捕获键盘输入和输入的组合键,它没有依赖,压缩只有只有(~3kb). hotkeys on Github hotkeys预览 __ __ __ | ...

  8. Pygame 键盘输入

    4.Pygame 键盘输入 所有的游戏都需要玩家与它进行互动体验.这种体验的第一步是获取用户的输入,并使用此输入以来影响游戏世界. 这方面的常见示例是用于移动角色的箭头键.用于各种攻击 (RPG) 的 ...

  9. 安卓源码:拦截USB-HID协议内容(模拟键盘输入方式的读卡器)

    前言 接触到的扫描设备分为三类:1)-usb或其它方式转串口,常规的打开读取串口即可:2)-usb模拟键盘输入模式,这种模式底层不是串口:3)原生串口模式,最简单,但这种接口普通手机没有. 本文只介绍 ...

最新文章

  1. Redis-08Redis数据结构--基数HyperLogLog
  2. 第十一届蓝桥杯A组省赛填空试题 A: 门牌制作(Java)
  3. torch.cat() 函数用法
  4. DNS解释问题:java.net.UnknownHostException
  5. 在php中isset什么意思,php – isset()和__isset()之间有什么区别?
  6. OSPF在企业网络中的应用
  7. 关于限制水晶报表的导出格式
  8. 【论文复现】ReLU、Leaky ReLU、PReLU、RReLU实验对比(2015)
  9. 彻底凉了!全球最大电子书网站遭美政府封站
  10. android的got表HOOK实现
  11. iOS调用系统相机、相册里面的文字显示英文
  12. ChatGPT进阶——如何辅助设计E-R图、流程图和时序图等
  13. python:talib 计算 OBV
  14. Python 网络爬虫工具:httpx 和 parsel(对比测评)
  15. 【高胜寒碎碎念】为什么有人愿意花两万块钱去参加IT培训学习?
  16. 浏览器伪装成linux,Firefox修改UserAgent伪装为手机浏览器的方法
  17. JAVAWEB JavaScript 正则表达式
  18. ArcGIS二次开发基础教程(06):有关图层的基本操作
  19. 区块链信用机制与应用场景介绍
  20. JAVA· chatAt()方法

热门文章

  1. 移动短信网关接入必须的几个参数
  2. 《系统相关》双系统安装(Windows+Ubuntu)
  3. 2021春运购票日历
  4. JAVA发送HTTP同步请求和异步请求
  5. XT交易所Websocket API
  6. 手机4g网速测试用什么软件,4G LTE 网速测试平台简介_手机生活应用-中关村在线...
  7. NodeJs代理的配置
  8. 56个民族按照字母排序,首字母拼音组合
  9. 国产网管软件的深化发展之路
  10. OpenCV-Python图像处理:腐蚀和膨胀原理及erode、dilate函数介绍