2012-12-12 96 views
1

我想知道如果有一种方法来检测是否有功能键盘键在一个声明中被压,而不是把它们列出所有像这样:如何检测是否有任何键盘功能键被按下?

if(!(e.Key == Key.F1) && !(e.Key == Key.F2) && !(e.Key == Key.F3) ...... !(e.Key == Key.F12)) 
+1

http://stackoverflow.com/questions/5718541/check-if-keys-is-letter-digit-special-symbol 这应该回答:但我也用一个开关喜欢这个解决方案你的问题 –

+0

谢谢你的帮助丹尼尔! – RobHurd

回答

2

一个解决办法是:

var key = e.SystemKey == Key.None ? e.Key : e.SystemKey; 
if(key >= Key.F1 && key <= Key.F12) 
+0

感谢您的帮助。 – RobHurd

+0

这实际上并不一定检测F10 – Alan

+0

你可以安全地假设'Key.F1 Clemens

2

这似乎对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; 
     } 
+0

@DanielHilgarth它的确如此,但这不是什么因为某种原因而按下时返回的。 – Alan

相关问题