2009-07-20 9 views
2

私はwinformアプリケーションの焦点を制御したいと思います。これは、カスタムリストボックスと他のいくつかのコンポーネントで構成されています。 特定のコントロールキーの処理を避けるために、すべてのキーボードイベントをウィンドウハンドラで管理したい(たとえば、文字を押してリストボックスにフォーカスしたときに、対応する文字で始まる項目が正しくない私のアプリケーションの動作)。 これをどうすれば実現できますか?Winformキーボード管理

答えて

4

フォームのKeyPreviewプロパティがtrueに設定されていることを確認してください。そして、このコードは、すべてのシナリオに動作しない場合があります...リストボックスにあなたのキーイベントをキャンセルする

private void Form1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (this.ActiveControl == listBox1) 
     e.Handled = true; 
} 

KeyPressイベントを動作するはずです。その場合、KeyDownイベントを試してみます。

+0

e.Handledをtrueに設定すると、キー入力が破棄されますか? –

+0

はい。基本的には、あなたがキーイベントを処理したことをイベントに伝えていて、そのイベントで何もしたくないということです。 – codeConcussion

+0

実際、私は以下の両方のケースを扱うKeyDownを使用しました: - 文字を入力するとき、リスト項目は選択されません。 - 上向き矢印または下向き矢印を押すと、リストアイテムの選択が変更されません。 回答を編集して承認済みとマークしてください。 –