El evento SelectedIndexChanged
es despedido en mi aplicación desde un cuadro combinado cuando:La diferenciación entre los eventos provocados por la interacción del usuario y mi propio código
- el usuario elige un elemento diferente en el cuadro combinado, o cuando:
- mi propio código actualiza el cuadro combinado
SelectedItem
para reflejar que el cuadro combinado ahora muestra propiedades para un objeto diferente.
Estoy interesado en el evento SelectedIndexChanged
para el caso 1, por lo que puedo actualizar las propiedades del objeto actual. Pero en el caso 2, no quiero que el evento se active, porque las propiedades del objeto no han cambiado.
Un ejemplo puede ayudar. Consideremos que tengo un cuadro de lista que contiene una lista de personas y tengo un cuadro combinado que representa la nacionalidad de la persona actualmente seleccionada en la lista. El caso 1 podría ocurrir si Fred está actualmente seleccionado en la lista, y yo uso el cuadro combinado para cambiar su nacionalidad de inglés a galés. Caso 2 podría suceder si luego selecciono a Bob, que es escocés, en la lista. Aquí, el código de mi controlador de eventos de actualización de lista ve que Bob ahora está seleccionado y actualiza el cuadro combinado para que Scottish sea ahora el elemento seleccionado. Esto provoca que se desencadene el evento SelectedIndexChanged
del cuadro combinado para establecer la nacionalidad de Bob en escocés, aunque ya sea escocés.
¿Cómo puedo actualizar la propiedad SelectedItem
de mi cuadro combinado sin causar que el evento SelectedIndexChanged
se desencadene? Una forma sería anular el registro del controlador de eventos, establecer SelectedItem
, luego volver a registrar el controlador de eventos, pero esto parece tedioso y propenso a errores. Debe haber una mejor manera.
Might me me. Pero, ¿esto no es un poco exagerado? "¿Cómo puedo actualizar la propiedad SelectedItem de mi cuadro combinado sin hacer que el evento SelectedIndexChanged se active?" ¿Podría recibir comentarios sobre mi solución? –
Podría ser excesivo. Establecer indicadores o quitar el controlador de eventos es una solución más simple, pero creé mi SuspendLatch cuando me di cuenta de que tenía varios lugares donde quería suspender el evento SelectedIndexChanged –
"Se ofrecen ofertas con un mejor nombre" - clase pública SuspendThingerMajig? – Juliet