我想知道是否有办法检测是否在一个语句中按下了任何功能键盘键而不是将它们全部列出:
if( !(e.Key == Key.F1) && !(e.Key == Key.F2) && !(e.Key == Key.F3) ...... !(e.Key == Key.F12))
答案 0 :(得分:3)
一种解决方案是:
var key = e.SystemKey == Key.None ? e.Key : e.SystemKey;
if(key >= Key.F1 && key <= Key.F12)
答案 1 :(得分:2)
似乎F键的值都是连续的 F1 = 90 F12 = 101
然而,通常F10按下导致sorta意外,
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;
}