【发布时间】:2012-08-09 10:17:39
【问题描述】:
我有一个带有事件的文本框,当输入一些文本时该事件应该执行。很容易检查它是否是字母数字,如此处所述Can I determine if a KeyEventArg is an letter or number?:
if ( ( ( e.KeyCode >= Keys.A && e.KeyCode <= Keys.Z ) ||
( e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9 ) ||
( e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9 ) )
这种方法的问题是我还应该使用Key.OemMinus、Key.OemQuestion 等手动检查-?!¿[]()。
有什么方法可以检查它是文本按键还是我应该手动检查(我认为这不是很优雅)?
【问题讨论】:
-
您真的要排除所有没有键的字符吗?例如,我的键盘没有
Є键,但可以说它仍然是文本。 -
这是一个很好的问题,因为我应该能够使用 ñ 来触发这个事件。我想我应该检查这个字符是否可打印或类似的东西。我想排除 Ins、Arrows、F's、Enter、Tab 等。
-
对照正则表达式检查文本是否可以解决?
-
正则表达式
\p{C}匹配不可见的控制字符和未使用的代码点。这些字符是否映射到键是无关紧要的。 -
当我按下 时只是为了澄清?我得到 e.Key 等于 Key.OemQuestion,我无法从中得到?。
标签: c# wpf keyboard-events