ファンクション キーボードのキーのいずれかが 1 つのステートメントで押されたかどうかを検出する方法があるかどうか疑問に思っていました。
if( !(e.Key == Key.F1) && !(e.Key == Key.F2) && !(e.Key == Key.F3) ...... !(e.Key == Key.F12))
1つの解決策は次のとおりです。
var key = e.SystemKey == Key.None ? e.Key : e.SystemKey;
if(key >= Key.F1 && key <= Key.F12)
Fキーの値はすべてシーケンシャルF1=90 F12=101のようです
ただし、通常、F10を押すと、予期しない結果になります。
156(システム)
したがって、次のような範囲チェックを実行したくなるかもしれません。
Key actualKey = (e.SystemKey == Key.None) ? e.Key : e.SystemKey;
if(actualKey >= Key.F1 && actualKey <= Key.F12)
// F Key was pressed
そして、これはおそらく、任意のFキーを検出するのに問題ありません。しかし、私はスイッチを使用したこのソリューションも気に入っています。
Key actualKey = (e.SystemKey == Key.None) ? e.Key : e.SystemKey;
switch (actualKey)
{
case Key.F1:
case Key.F2:
case Key.F3:
case Key.F4:
case Key.F5:
case Key.F6:
case Key.F7:
case Key.F8:
case Key.F9:
case Key.F10:
case Key.F11:
case Key.F12:
// fkey
break;
default:
// no fkey
break;
}