2009-06-26 10 views
0

私は自分の特定のタスク用のカスタムコントロールを置いたシンプルなフォームウィンドウアプリケーションを持っています。私はKeyDownハンドラをForm用に記述しました。問題はKeyDownハンドラ矢印キー以外のすべてのキーで正常に動作しています...コントロールはキーハンドラには入っていませんか?それはなぜそうですか?カスタムコントロールを削除するとうまく動作しますか?C#でキャプチャするキーボードイベントに問題があります

+0

現在フォーカスはどこにありますか? – Fredou

答えて

1

this SO questionをご覧ください。

KeyPreviewはありますか? どのようなコントロールにフォーカスがありますか?

+0

はいKeyPreviewはフォームでオンで、私のカスタムコントロールにフォーカスがありますが、なぜ矢印キーのみをキャプチャしていないのですか?他のすべてのキーとうまく動作していますが、KeyUpイベントが発生したことに気が付いたことの一つですが、keydownではありません。 –

+0

リンクをたどっていますか?カスタムコントロールにはテキストボックスが含まれていますか? – stevehipwell

0

なぜフォームがプレビュー矢印キーでないのかわかりません。しかし、とにかくキーボード処理(特にショートカットの処理)に低レベルのアクセスが必要な場合は、フォームのProcessCmdKeyをオーバーライドすることができます。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.Left) 
    { 
     // your code here 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
0

ProcessCmdKeyを適切に使用するには、コードのどこかにフォーカスする必要があります。

関連する問題