現在、Key
とModifierKey
の列挙型をフラグとして受け取るホットキーパッケージを使用しています。一例として、C#で列挙型の一覧に変換する
、これはCtrl+Shift+4
ホットキー登録します:フラグとして列挙して渡すとき、それは実際にはビット単位のor
操作(したがって、構文)を行っています、私の理解から、
hotKey = new GlobalHotKey.HotKey(Key.D4, ModifierKeys.Shift | ModifierKeys.Control);
は、 。
私のUIでは、List<Key>
にキーを保存する必要があります。しかし、最終的には、押されたキーを新しいホットキーとして設定する必要があります。List<Key>
を普通の古いKey
(フラグ操作あり)に変換する必要があります。
ビット単位でor
の操作であると思ったので、私はこの解決策をLINQで試行しました。 hotkeysPressed
は私List<Key>
ある
hotkeysPressedBitwise = hotkeysPressed.Select(f => f).Aggregate((x, y) => x | y);
。私のLINQ文は正しく動作しますが、実際に関数に渡すときに、私には望みの効果を与えません。
たとえば、X
とC
を渡すと、私のLINQ文はX | C
に等しい値を返します。それをKey
列挙型にキャストすると、何らかの理由でF22
というキーが返されます。
hotKey = new GlobalHotKey.HotKey(keys , ModifierKeys.None);
は機能しません。 (私はModifierKeysをnoneに設定しました。
ここに何か不足していますか?
Drats!私は何かが欠けていなければならないことを知っていました。 –