2017-01-03 5 views
0

私のUWPアプリでは、KeyDownイベントを観察してキー押しを検出します。それは私にVirtualKeyを与えます。しかし、そのキーが修飾キーであるかどうかをどのようにして知ることができますか?VirtualKeyが修飾キーであるかどうかを確認しますか?

+0

解決策の一部であると思われるものについて質問しています。どのような問題を解決しようとしていますか?多くの場合、誰かが 'KeyDown'イベントハンドラでモディファイアを要求すると、彼らはすでに間違った解決策を選択しています。 – IInspectable

+0

キー押下を検出して応答したい。修飾キーの場合、私は全く反応したくありません。テキストキーの場合、私はCharacterReceivedを購読することでテキストを取得できます。他のキーを押しても私はそのように捕らえられないので、私はKeyDownにも加入しています。そこでは、特定のキーでさまざまなことを行います。修飾語は含まれません。だから私はここからの情報を使用して終了しませんでしたが、KeyDownのように配列を使用して終了します。どのモディファイアが押されているかによって処理が異なります。 –

+0

コンテキストをもう少し追加する - これは他のプラットフォームに既に存在するアプリケーションのWindowsフロントエンドです。そのため、さまざまなキー操作のためのハンドラが多数用意されています。フロントエンドの仕事は、何が押されたのかを把握し、それをコアのKeyPressタイプに変換するために何らかの正気なマッピングを使用することです。 –

答えて

0

これは私が持っている最高のものです。私はそれが不完全であると確信しています、そして、それは間違いなく将来の証拠ではありません。私は良い答えがあることを望んでいます。その間、他の人は私が忘れた鍵を追加するように求められます。

public static VirtualKey[] ModifierKeys = 
{ 
    VirtualKey.Shift, 
    VirtualKey.LeftShift, 
    VirtualKey.RightShift, 
    VirtualKey.LeftWindows, 
    VirtualKey.RightWindows, 
    VirtualKey.Menu, // aka alt 
    VirtualKey.Control, 
    VirtualKey.LeftControl, 
    VirtualKey.RightControl, 
    VirtualKey.CapitalLock, 
    VirtualKey.NumberKeyLock, 
    VirtualKey.Insert, 
}; 

public static bool IsModifierKey(this VirtualKey key) { 
    bool r = ModifierKeys.Contains(key); 
    return r; 
} 
+0

も参照してくださいhttp://stackoverflow.com/a/36868943/1755 –

関連する問題