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 を使用していない場合、私は同じ問題に遭遇しました。あなたがしなければならないことは、異なる OS で異なる値を持つ PlatformKeyCode の値を確認する必要があることです。たとえば、PlatformKeyCode は.Windows では 190 ですが、Mac では 47 です。

以下のステートメントは、MSDNのKeyEventArgs.PlatformKeyCode プロパティから引用されています。

ポータブル キー コードは、サポートされているオペレーティング システム (この場合は Macintosh と Windows) で使用可能なすべてのキー コードの共通サブセットです。たとえば、キーストローク 'v' は Key 値として表されます (整数にキャストすると 51 として評価されますが、列挙情報を保持するとより便利です)。That key would have a PlatformKeyCode value of 86. ただし、Microsoft Windows の SCROLL LOCK キーなど、特定のキーストロークは移植できません。この場合、Key 値は Unknown であり、これは任意の移植不可能なキーの値であり、PlatformKeyCode は Windows プラットフォームでは 145 です。Microsoft Windows 固有のキー コードについては、MSDN ライブラリの「仮想キー コード」を参照してください。Macintosh 固有のキーコードについては、

私のマシンでは、PlatformKeyCode の値-は 189 です。

于 2012-11-01T08:45:27.623 に答える