SelectedIndexChanged

31/08/2006 - 19:19 por Baldor | Informe spam
Tengo un problema curioso, que hasta ahora no sabía que ocurría en .NET
Se trata del evento SelectedIndexChanged.
Lo que yo quiero es hacer un pequeño proceso sobre todas las filas
seleccionadas de un ListView, para lo que uso el evento
SelectedIndexChanged, donde recorro todas las filas y las trato.
Lo que sucede es que el usuario marca un numero 'n' de filas usando la tecla
'Mayusuculas', por ejemplo, y observo que cuantas más filas se marcan, más
tarda el proceso (obviamente), pero el retardo al aumentar 'n' bastante es
exagerado.
Resulta que lo que yo no sabía es que el evento no se ejecuta una sola vez,
sino tantas veces como sea la diferencia entre eñ nº de elementos que había
seleccionados antes, y los que acabamos de seleccionar. O sea, que si
tenemos un elemento seleccionado, y usando la tecla mayúsculas marcamos por
ejemplo 100 en total:

El Evento SelectedIndexChanged se ejecutará 99 veces!!!!! una por cada
elemento adicional que se va marcando.

Espero haberme explicado bien; para comprobar que esto sucede, solo hay que
poner un msgbox en el evento en cuestion.
¿Alguien se encontró alguna vez con esto?
¿Como hacer para ejecutar el evento solo una vez?
No me sirve pinchando en un botón cuando terminemos de seleccionar, o algo
similar. Lo que necesito es que el evento solo se ejecute una vez por cada
rango de elementos que seleccionemos.
 

Leer las respuestas

#1 Pedro Rivera
31/08/2006 - 21:22 | Informe spam
Que tal si en lugar de capturar SelectedIndex, capturas MouseDown y
compruebas si la cantidad de filas que tenias seleccionadas antes es
diferente a la cantidad actual.



"Baldor" wrote:

Tengo un problema curioso, que hasta ahora no sabía que ocurría en .NET
Se trata del evento SelectedIndexChanged.
Lo que yo quiero es hacer un pequeño proceso sobre todas las filas
seleccionadas de un ListView, para lo que uso el evento
SelectedIndexChanged, donde recorro todas las filas y las trato.
Lo que sucede es que el usuario marca un numero 'n' de filas usando la tecla
'Mayusuculas', por ejemplo, y observo que cuantas más filas se marcan, más
tarda el proceso (obviamente), pero el retardo al aumentar 'n' bastante es
exagerado.
Resulta que lo que yo no sabía es que el evento no se ejecuta una sola vez,
sino tantas veces como sea la diferencia entre eñ nº de elementos que había
seleccionados antes, y los que acabamos de seleccionar. O sea, que si
tenemos un elemento seleccionado, y usando la tecla mayúsculas marcamos por
ejemplo 100 en total:

El Evento SelectedIndexChanged se ejecutará 99 veces!!!!! una por cada
elemento adicional que se va marcando.

Espero haberme explicado bien; para comprobar que esto sucede, solo hay que
poner un msgbox en el evento en cuestion.
¿Alguien se encontró alguna vez con esto?
¿Como hacer para ejecutar el evento solo una vez?
No me sirve pinchando en un botón cuando terminemos de seleccionar, o algo
similar. Lo que necesito es que el evento solo se ejecute una vez por cada
rango de elementos que seleccionemos.



Preguntas similares