覆盖.net WinForms ListView中SPACE键的默认行为

时间:2010-03-31 09:51:44

标签: c# winforms listview keyboard keystroke

我想在 ListView 中实现 Space 键的一些自定义行为。基本上我想切换光标下项目的选定状态 - 这应该是相当简单的

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

但是,它还会执行默认操作,选择关注的项目。这样我就无法“取消选择”重点项目。我找了类似的问题,他们建议使用 PreviewKeyDown 事件,我将处理该密钥并禁止ListView执行其默认操作。但是PreviewKeyDown事件参数没有“处理”属性,所以我不能“吃掉”这个键。

1 个答案:

答案 0 :(得分: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;
  }
}