19

私のWPFアプリケーションには、ファンクションキー(F1- 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 = 99なので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.SystemF10キーの期待値のようです。

于 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 に答える