我想在 ListView 中实现 Space 键的一些自定义行为。基本上我想切换光标下项目的选定状态 - 这应该是相当简单的
this.FocusedItem.Selected = !this.FocusedItem.Selected;
但是,它还会执行默认操作,选择关注的项目。这样我就无法“取消选择”重点项目。我找了类似的问题,他们建议使用 PreviewKeyDown 事件,我将处理该密钥并禁止ListView执行其默认操作。但是PreviewKeyDown事件参数没有“处理”属性,所以我不能“吃掉”这个键。
答案 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;
}
}