如何处理KeyRoutedEventArgs e中VirtualKey枚举的缺失值

本杰明·钱伯斯(Benjamin Chambers)

使用C#,我正在扩展Windows.UI.Xaml.Controls.TextBox类以处理作为用户类型的输入的自定义格式。我的逻辑从两个事件处理程序中调用,一个用于TextChanged事件(用于尝试粘贴数据),另一个用于KeyDown事件(用于键入的输入)。

我的问题涉及KeyDowndEventArgs类中包含的KeyDown事件及其参数按键本身由VirtualKey枚举描述

不幸的是,该枚举缺少许多键,例如逗号,波浪号或什至退格键。

此外,存在Delete,但是按Delete时,将在KeyDown事件之前处理TextChanged事件。这可能会弄乱我的控件的行为。

有没有其他方法可以处理类型化数据,从而为我的自定义控件提供所需的控件?

汉斯·帕桑特

Backspace是可用的,它是VirtualKey.Back。

逗号通常是Oemcomma,是(VirtualKey)188。波浪号字符通常需要按住Shift键并按Oem8键,它是(VirtualKey)223。在我的脖子上,但在西班牙键盘上却没有,他们经常使用它,所以有一个专用的ñ键,他们必须按AltGr + D4才能获得普通的波浪号。通常,您可以通过查看System.Windows.Forms.Keys枚举和/或使用调试器来对其他丢失的组件进行反向工程

首字母缩写词OEM提供了一个提示,说明为什么缺少这些虚拟键代码。OEM是指原始设备制造商。实际设计和制造键盘的人。由他们决定使用oem键做什么。就像完全忽略它们或赋予它们完全不同的功能或将它们移到不寻常的位置一样。人们在地球上遥远的地方使用键盘会发生这种情况。西方用户很难使用某些键盘布局。当然不是本地人。

换句话说,有意地省略了这些虚拟键代码,因为您不能依赖那些实际上有用或存在于用户设备上的键。因此,您不应使用它们。Microsoft主动从WinRT中删除了导致长期本地化问题的功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章