Außer Kraft setzen Standardverhalten von SPACE-Taste in .net WinForms Listview
Frage
Ich möchte einige individuelle Verhalten von Space Schlüssel in einem implementieren Listview . Grundsätzlich würde Ich mag ausgewählten Status der Position unter dem Cursor wechseln - das sollte ziemlich einfach sein
this.FocusedItem.Selected = !this.FocusedItem.Selected;
aber leider tut es auch die Standardaktion, die ist, um der fokussierte Punkt. Auf diese Weise vermag ich nicht zu ‚deaktivieren‘ den fokussierten Punkt. Ich habe ähnliche Probleme gesucht und sie schlagen vor, mit PreviewKeyDown Ereignis, in dem ich die Schlüssel verarbeiten würde und die Listview nicht zulassen seine Standardaktion zu tun. Aber das PreviewKeyDown Ereignis Argument hat keine „unbehandelt“ Eigenschaft, so kann ich nicht ‚essen‘ diese Taste.
Lösung
Das funktioniert, wie man wollte:
private void listView1_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyData == Keys.Space) {
listView1.FocusedItem.Selected = !listView1.FocusedItem.Selected;
e.Handled = e.SuppressKeyPress = true;
}
}