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

本文关键字:枚举 处理 KeyRoutedEventArgs VirtualKey | 更新日期: 2023-09-27 18:08:49

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

我的问题涉及KeyDown事件及其参数,它们包含在KeyRoutedEventArgs类中。按键本身由VirtualKey枚举描述。

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

此外,删除是存在的,但当你按下它的TextChanged事件得到处理之前的KeyDown事件。这会干扰控件的行为。

是否有另一种方法来处理类型数据,这将给我的控制,我需要在我的自定义控件?

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

Backspace可用,它是VirtualKey.Back。

逗号一般为"oem逗号",为(VirtualKey)188。波浪字符通常需要按住Shift键并按下Oem8键,它是(VirtualKey)223。在我的地区,但不是在西班牙语键盘上,他们经常使用它,所以有一个专门的ñ键,他们必须按AltGr + D4才能得到一个普通的波浪。你通常可以通过查看System.Windows.Forms.Keys枚举和/或使用调试器来逆向工程其他缺失的选项。

首字母缩略词OEM提供了为什么缺少这些虚拟密钥代码的提示。OEM是指原始设备制造商。设计和制造键盘的人。这是在他们的自由裁量权做任何他们想要的oem密钥。比如完全省略它们,或者赋予它们完全不同的功能,或者把它们移到一个不寻常的位置。这种事情可能发生在地球上遥远地方的人们使用的键盘上。对于西方用户来说,有些键盘布局非常难以使用。当然不是本地人。

换句话说,这些虚拟键代码被故意省略,因为你不能依赖于这些键实际上是有用的或存在于用户的设备上。所以你不应该使用它们。微软积极地删除了WinRT中导致长期本地化问题的功能。