C# Silverlight:减法键

C# Silverlight:减法键,c#,silverlight-4.0,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 &&a

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

if((e.Key>=Key.D0&&e.Key=Key.NumPad0&&e.Key当一些客户不使用IE时,我遇到了同样的问题。你要做的是你必须检查PlatformKeyCode的值,它在不同的操作系统上有不同的值,例如,PlatformKeyCode在Windows上是190,但在Mac上是47

以下声明引用自MSDN

便携式钥匙代码是所有可能钥匙的共同子集 受支持操作系统的代码,在本例中为Macintosh和 例如,击键“v”表示为键值 (如果将其转换为整数,则其计算结果将为51,但更精确 如果保留枚举信息,则此键将非常有用) PlatformKeyCode值为86。但是,某些击键不可用 便携式,如Microsoft Windows的滚动锁定键。在此 在这种情况下,键值未知,这是任何不可移植项的值 在Windows平台上,PlatformKeyCode为145 有关Microsoft Windows特定密钥代码的信息,请参阅 MSDN库中的“虚拟密钥代码”。有关 Macintosh特定键代码,请参阅键盘布局服务参考 在Apple开发者连接网站上


在我的机器上,PlatformKeyCode的值是189。

同一操作系统的不同版本之间,该平台密钥代码是否会发生变化。比如说Windows xp、7和8(现在)…或者它是Windows的通用值?我已经用Windows xp、Windows 7和Windows 8对其进行了测试。它们都是相同的值。