1

ListViewにスペースキーのカスタム動作を実装したいと思います。基本的に、カーソルの下のアイテムの選択されたステータスを切り替えたいです-それはかなり単純なはずです

this.FocusedItem.Selected = !this.FocusedItem.Selected;

しかし残念ながら、フォーカスされたアイテムを選択するというデフォルトのアクションも実行します。このようにして、フォーカスされたアイテムを「選択解除」することができません。私は同様の問題を探しましたが、PreviewKeyDownイベントを使用することを提案しています。このイベントでは、キーを処理し、ListViewがデフォルトのアクションを実行できないようにします。ただし、PreviewKeyDownイベント引数には「handled」プロパティがないため、このキーを「食べる」ことはできません。

4

1 に答える 1

1

これはあなたが望むように機能しました:

private void listView1_KeyDown(object sender, KeyEventArgs e) {
  if (e.KeyData == Keys.Space) {
    listView1.FocusedItem.Selected = !listView1.FocusedItem.Selected;
    e.Handled = e.SuppressKeyPress = true;
  }
}
于 2010-03-31T09:56:24.043 に答える