La desactivación de un ListView en C#, pero todavía muestra la selección actual
Pregunta
Tengo un control ListView, y estoy tratando de averiguar la forma más fácil y mejor manera de no permitir el cambio de la fila seleccionada(s), sin ocultar la fila seleccionada(s).
Yo sé que hay una HideSelection
la propiedad, pero que sólo funciona cuando el ListView
todavía está habilitado (pero no centrado).Necesito la selección para ser visibles incluso cuando el control está desactivado.
¿Cómo puedo aplicar esto?
Solución
También puedes hacer el ListView ownerdraw.Entonces usted tiene el control completo sobre cómo los elementos de mirar si están seleccionados o no, o si el ListView en sí está habilitado o no.El DrawListViewItemEventArgs proporciona una manera para pedir el ListView para dibujar las partes individuales de los artículos, de modo que usted sólo tiene que dibujar los bits que le interesa.Por ejemplo, puede dibujar el fondo de un elemento, sino que dejan a la ListView para dibujar el texto.
Otros consejos
Hay dos opciones, cambiar las filas seleccionadas movilidad colores.O cambiar todas las otras filas para simular que están desactivadas excepto el seleccionado.La primera opción es, obviamente, la forma más fácil, y la segunda opción, obviamente, va a necesitar un poco más de protección.
Me han hecho la primera opción antes y funciona bastante bien.Sólo tienes que recordar para cambiar los colores de la espalda a los valores predeterminados en caso de que otro está seleccionada la fila más adelante en el proceso.
Implementar SelectedIndexChanged y hacer esto
private void listViewABC_SelectedIndexChanged(object sender, EventArgs e)
{
listViewABC.SelectedItems.Clear();
}