私は現在、アクションを実行するためのホットキーの設定を扱うプロジェクトに取り組んでいます。ホットキー機能は機能していますが、キーが修飾子のみで構成されている場合は、ホットキーを設定できないようにします。たとえば、Ctrl+Fは有効なホットキーですが、Ctrl+Altはそうではありません。
実際のKeys列挙オブジェクトから修飾キーを取り除き、それをKeys.Noneと照合して、修飾キーのみで構成されているかどうかを判断する方法をいくつか試しました。ただし、実際には、これはあまりうまく機能していません。
私は最初にこの方法を試しました:
private Keys StripModifiers(Keys Key)
{
return Key & ~Keys.Modifiers;
}
CtrlキーがLButton|のKeyDataプロパティを使用してPreviewKeypressメソッドを呼び出しているように見えるため、これは機能しませんでした。ShiftKey | Keys.Modifiersビットマスクが完全にはキャッチしていないように見えるコントロール。
私は自分自身のもっと複雑なものを書いてみました:
private Keys StripModifiers(Keys Key)
{
return Key &
~Keys.Alt &
~Keys.CapsLock &
~Keys.Control &
~Keys.ControlKey &
~Keys.LControlKey &
~Keys.LMenu &
~Keys.LShiftKey &
~Keys.LWin &
~Keys.MButton &
~Keys.Menu &
~Keys.NumLock &
~Keys.RButton &
~Keys.RControlKey &
~Keys.RMenu &
~Keys.RShiftKey &
~Keys.RWin &
~Keys.Scroll &
~Keys.Shift &
~Keys.ShiftKey;
}
ただし、KeyDataプロパティが65のイベントを呼び出すだけのAキーを押すと、Keys.Noneになり、制限が厳しすぎるため、これも機能しませんでした。
私はこの時点でほとんど途方に暮れています、誰かが以前にこの問題に遭遇したか、解決したことがありますか?