19

F1我的 WPF 应用程序具有由功能键 ( - )触发的行为F12

我的代码是这样的:

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 = 99and System = 156,所以我可以排除它是一个重复的枚举值(如PageDown = Next = 20)。

那么,我如何判断用户何时按下F10

代替检查是否安全Key.System?这感觉有点脏 - 可能会Key.System因为按下其他键而导致?或者是否有一些设置可以F10报告为Key.F10

4

4 回答 4

19

除了 Yacoder 的响应,使用以下命令检查F10密钥:

case Key.System:
  if (e.SystemKey == Key.F10)
  {
    // logic...
  }

SystemKey属性将告诉您按下了哪个系统键。

于 2010-01-20T17:42:13.250 回答
3

F10 启动窗口菜单。在所有 Windows 应用程序中都是一样的。

这似乎Key.System是 F10 键的预期值。

于 2010-01-20T17:37:59.403 回答
1

用 DataContext 回答:



    public partial class BankView : UserControl
    {
        public BankView()
        {
            InitializeComponent();

            this.KeyDown += new KeyEventHandler(BankView_KeyDown);
        } 

        private void BankView_KeyDown(object sender, KeyEventArgs e)
        {
            try
            {
                switch (e.Key)
                {
                    case Key.F4:
                        ((BankViewModel)DataContext).OpenAccount();
                        break;
                }
            }
            catch (Exception ex)
            {
                ...
            }
        }

于 2012-07-19T17:50:09.480 回答
-2

这对我有用,因为F1

Private Sub Window_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
    If (e.Key = Key.F1) Then
        ShowHelp()
    End If
End Sub
于 2013-10-01T16:08:20.793 回答