我有一个货币值的句柄。它应该允许负值-555。
在keydown / Keypress上,当我尝试在Numpad中找到Subtract键的Key值时,它在IE版本中给出了Key.Subtract。但在chrome / firefox最新版本中,它显示为Key.Unknown。
是否需要进行任何特定处理。
样品:
if ((e.Key >= Key.D0 && e.Key <= Key.D9) || (e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9) || (e.Key == Key.Subtract) || (e.Key == Key.Unknown))
{
//valid number, but if shift is pressed, it is an invalied character
if (Keyboard.Modifiers == ModifierKeys.Shift)
e.Handled = true;
}
else
e.Handled = true;
在这里,我明确地处理了未知密钥。但有没有任何标准的方法摆脱这个?请帮帮我。
答案 0 :(得分:1)
当某些客户不使用IE时,我遇到了同样的问题。您需要做的是检查PlatformKeyCode的值,该值在差异OS上具有差异值,例如,的PlatformKeyCode。在Windows上为190,但在Mac上为47。
下面的语句引自MSDN上的KeyEventArgs.PlatformKeyCode Property。
便携式密钥代码是所有可能密钥的公共子集 支持的操作系统的代码,在本例中为Macintosh和 视窗。例如,击键'v'表示为Key值 (如果将其转换为整数,则评估为51,但更多 如果您保留枚举信息,则非常有用)。那把钥匙会有 PlatformKeyCode值为86.但是,某些击键不是 便携式,例如Microsoft Windows的SCROLL LOCK键。在这 case,Key值为Unknown,这是任何nonportable的值 key,并且Windows平台上的PlatformKeyCode是145。对于 有关Microsoft Windows特定密钥代码的信息,请参阅 MSDN Library中的“虚拟密钥代码”。有关的信息 特定于Macintosh的密钥代码,请参阅键盘布局服务参考 在Apple Developer Connection网站上。
在我的机器上, - 的PlatformKeyCode值为189.