C# 如何检测是否按下了任何键盘功能键?

C# 如何检测是否按下了任何键盘功能键?,c#,.net,wpf,.net-4.0,C#,.net,Wpf,.net 4.0,我想知道是否有一种方法可以检测是否在一个语句中按下了任何功能键盘键,而不是像这样列出它们: if( !(e.Key == Key.F1) && !(e.Key == Key.F2) && !(e.Key == Key.F3) ...... !(e.Key == Key.F12)) 一种解决办法是: var key = e.SystemKey == Key.None ? e.Key : e.SystemKey; if(key >= Key.F1 &&

我想知道是否有一种方法可以检测是否在一个语句中按下了任何功能键盘键,而不是像这样列出它们:

if( !(e.Key == Key.F1) && !(e.Key == Key.F2) && !(e.Key == Key.F3) ...... !(e.Key == Key.F12))
一种解决办法是:

var key = e.SystemKey == Key.None ? e.Key : e.SystemKey;
if(key >= Key.F1 && key <= Key.F12)
var key=e.SystemKey==key.None?e、 密钥:e.SystemKey;

如果(key>=key.F1&&key,则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

这应该能回答你的问题谢谢你的帮助Daniel!这实际上并不一定能检测到F10。你可以安全地假设
Key.F1
等,并且没有间隙,即
(int)Key.F1==(int)Key.F2-1==(int)Key.F3-2
等。这是文档吗?@Alan:确实是:
Assert.Equal(99,Key.F10);
@DanielHilgarth是的,但按F10可以得到值156!@Clemens:不幸的是,这没有记录。至少在MSDN上没有记录:@DanielHilgarth它有,但由于某种原因按它时不会返回值。
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;
        }