2009-05-03 19 views
3

私はここで新しく、C#アプリケーションには少し問題があります。 キーダウンイベントをキャプチャしたい。これは最初は問題ではありませんでしたが、フォームにいくつかのボタンを追加した後、フォームのキーダウンイベントは矢印キーを無視し、ボタンを次のボタンに移動します(キーアップイベントは機能します)私は矢印キーを押しているときにこれを停止し、彼らが何か他のことをする方法?ボタンの影響を受けるキーダウンイベント

+0

以下の編集を確認してください。 –

答えて

5

フォームの KeyPreviewプロパティをtrueに設定します。これによりフォームは子コントロールに加えてkeydownイベントを見ることができます。

あなたは、各コントロールのキーダウンイベントを設定する必要がありますコントロールの機能を通常のキーを押したしたくない場合は...あなたのフォームに

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData.Equals(Keys.Right)) 
    { 
     MessageBox.Show("Right Key Pressed!"); 
    } 

    return base.ProcessCmdKey(ref msg, keyData); 
} 
+0

私はKeyPreviewをtrueに設定しましたが、矢印キーが押されてもまだ応答がありません。他のすべてのキーは、矢印以外のKeyDownイベントで機能しているようです。 – sheitan

+0

通常のフォームキー*イベントはコントロールキーを無効にしません。 ProcessCmdKeyをオーバーライドする必要があります。 –

+0

ありがとうございます。これは私をたくさん助けました! :) – sheitan

1

これを追加し、設定イベント引数のtrue、handles属性をtrueに設定すると、組み込みの制御機能にバブルアップすることはありません。

関連する問題