Pretendo que el usuario pueda moverse por los elementos de un listView con
las flechas "arriba" y "abajo" para lo que escribí el siguiente código para
gestionar el evento KeyDown:
if (lst.SelectedIndices.Count > 0)
{
if (lst.SelectedIndices[0] == 0 && e.KeyCode == Keys.Up)
lst.Items[lst.Items.Count-1].Selected = true;
else
if (lst.SelectedIndices[0] == lst.Items.Count - 1 && e.KeyCode ==
Keys.Down)
lst.Items[0].Selected = true;
else
if (e.KeyCode == Keys.Down)
lst.Items[lst.SelectedIndices[0] + 1].Selected = true;
else
if (e.KeyCode == Keys.Up)
lst.Items[lst.SelectedIndices[0] - 1].Selected = true;
}
El problema que tengo es que el código anterior tiene un comportamiento que
no logro entender. Funciona bien, excepto en los siguientes dos casos (es
difícil de explicar, así que intentaré dar los pasos exactos)
1) estamos en el primer elemento, pulsamos flecha arriba dos veces y depués
flecha abajo.
2) estamos en el último elemento, pulsamos flecha abajo dos veces y después
flecha arriba.
Os agradecería muchísimo que me dijéseis que está pasando.
Leer las respuestas