Silverlight:减去关键字

时间:2012-11-01 08:00:08

标签: c# silverlight-4.0

我有一个货币值的句柄。它应该允许负值-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;

在这里,我明确地处理了未知密钥。但有没有任何标准的方法摆脱这个?请帮帮我。

1 个答案:

答案 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.