2017-01-26 27 views
1

これまで同様の質問がありましたが、私の解決策はありませんでした。私はCTRLボタンと "+"ボタンの両方が押されたときに実行する必要のあるコードをいくつか持っています。親フォーラムでKeyPreviewフィールドをtrueに設定しました。私はコントロールのクラスには、以下のイベントハンドラを入れてみましたが、誰も今まで私のために働いていません。私は、任意のキーを押すと、イベントがキャッチされていません。WinFormsコントロールのキーダウンイベントが発生しない

private void PreviewControl_OnKeyDown(object sender, KeyEventArgs e){} 
protected override OnKeyDown(KeyEventArgs e){} 
protected override bool ProcessCmdKey(ref Message msg, Keys keyData){} 
+1

フォーカスがある場合にのみ、コントロールにキーイベントが送信されます。フォーカスを持たずにユーザーコントロールを使用してショートカットキーをトラップする場合は、[this trick](http://stackoverflow.com/a/38983624/3110834)を使用できます。 –

+1

あなたのコントロールが 'PictureBox'のようなもので、それを選択可能にしてキーイベントを処理したい場合、[this(Preferred)]のように選択できます(http://stackoverflow.com/a/38982186/3110834 )または[this](http://stackoverflow.com/a/37792846/3110834)を参照してください。 –

+0

(Preferred)を実装しようとしましたが、まだ同じ問題があります。私は何か完全に間違っている必要がありますが、私はそれが何であるか把握することはできません。 – user2481095

答えて

0

だから私はそれがReza Aghaei @からの助けを借りて動作するようになりました。私はthis(Preferred)を使用しました。 Rezaは正しかったです。コントロールが実際にフォーカスを取得していなかったので、コントロールをフォーカスするためにこのコードを追加する必要がありました。しかし、私はOnKeyDownイベントハンドラを使用することができませんでした。代わりに、コントロールクラス内でProcessCmdKey(ref Message msg、Keys keyData){}を使用してキーイベントをキャッチする必要がありました。

関連する問題