2011-07-12 8 views
6

私はWindows.Formを持っており、そこにはProcessCmdKeyがオーバーライドされています。ただし、これはF10を除くすべてのFキーで動作します。フォーム上でF10を押すと、ProcessCmdKeyが呼び出されない理由を検索しようとしています。F10キーがキャッチされません

誰かが原因を見つける方法についてのヒントを教えてください。

よろしく、トーマス

+0

Fロックを解除しましたか? –

+0

代わりにKeyDownイベントを使用しようとすると、動作するはずです。 – Tigran

答えて

8

Windowsが異なっF10を扱います。説明は「備考」に記載されていますhere on MSDN

+0

彼はKeyDownではなくProcessCmdKeyを使用しています。これは正常に動作するはずです。 –

1

このコードを.NETのWindowsフォームでテストしたところ、期待どおりのメッセージボックスが得られました。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.F10) 
    { 
     MessageBox.Show("F10 Pressed"); 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
+1

私は新しいフォームを作成するときにもそれが働いています。しかし、なぜF10が既存のフォームと連携していないのかを知る必要があります。 – BennoDual

1

私はそう推測しようと、あなたの問題を得たことがある:

あなたはtrueにあなたのWindowsFormののKeyPreviewプロパティを設定しましたか?

これにより、正確な瞬間にUIにフォーカスを当てているコントロールにポンピングする前に、WindowsFormのキーストップイベントが可能になります。

どうすればいいのか教えてください。

よろしくお願いいたします。

私はsystem.windows.input.key.F10にe.keyに一致するようにしようとしていたと(F9がしたスルーF1 althougth)それは動作しませんしませんでした私の場合は
+1

はい - KeyPreviewをtrueに設定しましたが、機能しません。 – BennoDual

+0

"これはF10以外のFキーでも動作しますが、この時点では、インストールされているPCに何らかのアプリケーションがインストールされている場合は、個人的に他の回答は表示されません。メディアアプリケーション...あなたは他のPCであなたのアプリを実行しようとすることはできますか? – Tigran

+0

ちょうど好奇心@ t.kehl、それは私の最後のコメントに関連したものでしたか? Cuaseは、実際にそれについて考えていますが、私はVS 2010のようなものを期限切れにしました。私はいくつかのアプリケーションをインストールして、フックをインストールしました。 – Tigran

0

Select Case e.Key 

Case is = Key.F10 
... do some stuff 

end select 

しかし、私は変更それは

Select Case e.Key 

Case is = 156 
... do some stuff 

end select 

となりました。

関連する問題