2011-07-22 5 views
2

Windowsアプリケーションでリストボックスコントロールを使用していて、デフォルトの右矢印キーおよび左矢印キーイベントのトリガーを無効にします。現在、右矢印または左矢印を押すと、選択した項目がリストボックスの上下に移動します。自分の行動を追加したい。C#は、右矢印キーまたは左矢印キーが押されたときのリストボックスコントロールのデフォルトアクションを防止します。

答えて

8

イベントハンドラをListBox.KeyDownイベントに追加してみてください。押されたキーが矢印キーの場合は、HandledフラグをKeyPressEventArgsに設定して、それ以上の処理を行わないようにtrueに設定します。

コード例、MSDN Forum post

private void listBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 
{ 
    If (e.KeyCode == Keys.Right || e.KeyCode == Keys.Left) 
    e.Handled = true; 
} 
+0

これらのキーはシステムキーバインディングと見なされるため、これは機能しません。私はあなたが 'ProcessCmdKey'を使用しなければならないと思います – Icemanind

+1

ええ、KeyDownメソッドが処理されたあとも、デフォルトのイベントアクションが発生します。 processCmdKeyメソッドを調べます。 – Paul

+0

@Paul:さらに処理しないように 'Handled'フラグを' true'に設定していますか? –

1

に基づいて、あなたは、リストボックスコントロールでProcessCmdKeyメソッドをオーバーライドしなければなりません。新しいクラスを作成し、それをリストボックスから派生させ、ProcessCmdKeyをオーバーライドします。

関連する問題