我的WPF应用程序具有由功能键触发的行为(F1 - F12)。在WPF中检测到用户按下F10
我的代码是沿着这些线路:
private void Window_KeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.F1:
...
case Key.F2:
...
}
}
这适用于所有的F键除了F10。调试时,我发现e.Key == Key.System
当用户按下F10。
在枚举定义中,F10 = 99
和System = 156
,所以我可以排除它是一个重复的枚举值(如PageDown = Next = 20
)。
那么,如何判断用户何时按下F10?
是否安全地检查Key.System
而不是?这感觉有点肮脏 - 有可能Key.System
永远会因其他键被按下而产生吗?或者是否有某些设置会使F10报告为Key.F10
?
这很酷。我发现我还必须在'e.Key == Key.System'时设置'e.Handled = true',以确保焦点不会留在控制箱上。 (当我使用'WindowStyle = None'时,控制盒在我的应用程序中是不可见的,这使得用户对默认的F10行为更加困惑。)另外,当用户按下“e.Key == Key.System” Alt键 - 也许在其他一些情况下 - 所以'e.SystemKey'绝对是取代F10的前提。谢谢! – teedyay 2010-01-21 10:08:49