Pregunta

Me gustaría poner en práctica algunas comportamiento personalizado de Espacio tecla en un ListView . Básicamente me gustaría cambiar el estado seleccionado del elemento bajo el cursor - que debería ser bastante simple

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

Pero, por desgracia, también lo hace la acción por defecto, que es para seleccionar del elemento destacado. De esta manera no puedo elemento destacado 'desactiva'. He buscado problemas similares y sugieren el uso de PreviewKeyDown evento, en el que me gustaría procesar la llave y no permitir el ListView para realizar su acción predeterminada. Pero el argumento de evento PreviewKeyDown tiene ninguna propiedad "manejado", así que no puedo 'comer' esta clave.

¿Fue útil?

Solución

Esto funcionó como lo hubiera querido:

private void listView1_KeyDown(object sender, KeyEventArgs e) {
  if (e.KeyData == Keys.Space) {
    listView1.FocusedItem.Selected = !listView1.FocusedItem.Selected;
    e.Handled = e.SuppressKeyPress = true;
  }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top