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;

在这里,我已经明确地处理了未知键。但是有什么标准的方法可以摆脱这个吗?请帮我。

4

1 回答 1

1

当一些客户不使用 IE 时,我也遇到了同样的问题。您要做的是检查 PlatformKeyCode 的值,它在不同的操作系统上具有不同的值,例如,PlatformKeyCode.在 Windows 上是 190,但在 Mac 上是 47。

以下语句引用自MSDN 上的KeyEventArgs.PlatformKeyCode 属性

便携键码是受支持操作系统(在本例中为 Macintosh 和 Windows)的所有可能键码的公共子集。例如,击键 'v' 表示为一个 Key 值(如果将其转换为整数,它将评估为 51,但如果保留枚举信息则更有用)。该键的 PlatformKeyCode 值为 86。但是,某些键击是不可移植的,例如 Microsoft Windows 的 SCROLL LOCK 键。在这种情况下,Key 值为 Unknown,这是任何不可移植密钥的值,PlatformKeyCode 在 Windows 平台上为 145。有关 Microsoft Windows 特定键码的信息,请参阅 MSDN 库中的“虚拟键码”。有关 Macintosh 特定键码的信息,

在我的机器上,PlatformKeyCode 的值为-189。

于 2012-11-01T08:45:27.623 回答