WPF 捕获键盘输入事件
最近修改的一个需求要求捕获键盘输入的 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 捕获键盘输入事件相关推荐
- java keyboard.press_用来捕获键盘输入的keypress.js介绍
keypress.js是一个捕获键盘输入的JavaScript库,它简单易用,轻量级的压缩版本只有9kB左右,并且没有依赖其他JavaScript库. 我们通常用键盘事件来监听keydown和keyu ...
- Keypress - 捕获键盘输入的JavaScript库
Keypress 是一个强大的 JavaScript 库,用于捕获键盘输入.这是一个有非常特殊的功能的输入捕获库,它是很容易掌握和使用,并且不依赖第三方库.在网站开发中,经常会碰到需要处理键盘输入的场 ...
- WPF经典教程--键盘输入事件, 鼠标输入事件, 焦点处理
一.键盘和键盘事件 WPF提供了一个基本的键盘类(System.Input.Keyboard类),该类提供键盘相关的事件,方法和属性,以提供有关键盘状态的信息.键盘事件也由诸如UIElement XA ...
- python监听键盘输入 linux_Linux下使用Python捕获键盘输入
在Linux下如何用Python监控键盘记录 思路 在上篇已经说到如何使用Python获取/dev/input目录下event对应的设备的名字.那么我们可以知道设备的名字,就可以通过名字知道哪些eve ...
- Java模拟鼠标键盘输入事件 --- Robot 类
本文链接: http://blog.csdn.net/xietansheng/article/details/78453672 Java Swing 图形界面开发(目录) 官方JavaDocsApi: ...
- Linux检测鼠标输入和键盘输入事件
select实现IO多路复用 int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct time ...
- js简单的设置快捷键,hotkeys捕获键盘键和组合键的输入
设置快捷键 这是一个强健的 Javascript 库用于捕获键盘输入和输入的组合键,它没有依赖,压缩只有只有(~3kb). hotkeys on Github hotkeys预览 __ __ __ | ...
- Pygame 键盘输入
4.Pygame 键盘输入 所有的游戏都需要玩家与它进行互动体验.这种体验的第一步是获取用户的输入,并使用此输入以来影响游戏世界. 这方面的常见示例是用于移动角色的箭头键.用于各种攻击 (RPG) 的 ...
- 安卓源码:拦截USB-HID协议内容(模拟键盘输入方式的读卡器)
前言 接触到的扫描设备分为三类:1)-usb或其它方式转串口,常规的打开读取串口即可:2)-usb模拟键盘输入模式,这种模式底层不是串口:3)原生串口模式,最简单,但这种接口普通手机没有. 本文只介绍 ...
最新文章
- Redis-08Redis数据结构--基数HyperLogLog
- 第十一届蓝桥杯A组省赛填空试题 A: 门牌制作(Java)
- torch.cat() 函数用法
- DNS解释问题:java.net.UnknownHostException
- 在php中isset什么意思,php – isset()和__isset()之间有什么区别?
- OSPF在企业网络中的应用
- 关于限制水晶报表的导出格式
- 【论文复现】ReLU、Leaky ReLU、PReLU、RReLU实验对比(2015)
- 彻底凉了!全球最大电子书网站遭美政府封站
- android的got表HOOK实现
- iOS调用系统相机、相册里面的文字显示英文
- ChatGPT进阶——如何辅助设计E-R图、流程图和时序图等
- python:talib 计算 OBV
- Python 网络爬虫工具:httpx 和 parsel(对比测评)
- 【高胜寒碎碎念】为什么有人愿意花两万块钱去参加IT培训学习?
- 浏览器伪装成linux,Firefox修改UserAgent伪装为手机浏览器的方法
- JAVAWEB JavaScript 正则表达式
- ArcGIS二次开发基础教程(06):有关图层的基本操作
- 区块链信用机制与应用场景介绍
- JAVA· chatAt()方法