none
Eliminar controlador de evento en tiempo de ejecucion RRS feed

  • Pregunta

  • Buen día amigos

    necesito eliminar un controlador de evento en tiempo de ejecución de un evento que NO cree en tiempo de ejecución, el problema es que tengo un control comboBox con el evento SelectedChanged, cuando ejecuto dicho evento no tengo líos, pero cuando salgo de la vista(formulario) donde se encuentra este control y quiero después volver a entrar a dicha vista(formulario) el evento SelectedChanged del control ComboBox se me ejecuta, cuando esto no debe pasar, pues solo se debe ejecutar cuando yo de click en el ComboBox, entonces creo que la solución a esto puede ser en el evento click del botón cerrar de ese formulario remover el evento del ComboBox.

    Espero me hayan entendido y me puedan ayudar.

    De antemano mil gracias a todos.


    jorge duran

    viernes, 7 de agosto de 2015 20:29

Todas las respuestas

  • Saludos:

    Todos los obejtos tienen dos secuencias de eventos, la automatica (al momento de instanciamiento) y otra sobre demanda (on demand). Para ver la secuencia, mira el siguiente link:

    https://msdn.microsoft.com/en-us/library/System.Windows.Controls.ComboBox%28v=vs.110%29.aspx

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    viernes, 7 de agosto de 2015 21:31
  • Hola Jorge puedes quitar un controlador de eventos de un control utilizando el método RemoveHandler:

            RemoveHandler ComboBox1.SelectedValueChanged, AddressOf ComboBox1_SelectedValueChanged
            RemoveHandler ComboBox1.SelectedIndexChanged, AddressOf ComboBox1_SelectedIndexChanged

    No sé a cual de los dos eventos te refieres.

    Sin embargo existen otras opciones en lugar de andar añadiendo y quitando controladores de eventos.

    Habría que conocer más en detalle tu caso particular, pero una opción puede ser utilizar una variable booleana a modo de flag para indicar cuándo se debe ejecutar o no un código. Otra puede ser utilizar el evento SelectionChangeCommitted que únicamente se ejecuta cuando el usuario cambia la selección del combobox, no se ejecuta cuando el valor se cambia por código.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    sábado, 8 de agosto de 2015 6:34
  • Muchas gracias por tu respuesta Asier Villanueva, pero tengo el siguiente error en la línea de código del Remove Handler:

    dentro de los paréntesis debo colocar lo mismo que tengo en la parte del código donde esta dicho evento??


    jorge duran

    sábado, 8 de agosto de 2015 14:10
  • Lo que tienes que poner para quitarlo es ponerlo con esta estructura:

    RemoveHandler Objeto.Evento, AddressOf Procedimiento

    Siendo Evento por ejemplo: click, mousedown, ...


    Si la contestación te ha servido de ayuda márcala como respuesta. Si lo que publico no funciona, no tengo la culpa, SOY HUMANO, no una máquina. M-Registry Cleaner, el programa que he creado con ayuda del foro, ya se puede descargar desde mi página o sino realizar alguna que otra donación en mcaresoft.wordpress.com sería de agradecer.

    sábado, 8 de agosto de 2015 16:22
  • Hola ing.Jorge,

    ¿Pero lo mas simple para solventar tu problema no es la última sugerencia de Asier? Coloca las instrucciones en el evento SelectionChangeCommited, de seguro lo tienes en el evento SelectionIndexChanged/SelectionValueChanged. Con ello te evitas de liarte con los controladores de evento, resuelve un problema siguiendo un flujo lógico, claro y simple.

    sábado, 8 de agosto de 2015 16:45
  • Amigo Willams Morales lo que pasa en es que ese evento que menciona Aser, SelectionChangeCommited no existe en los eventos de mi control (mi aplicación es wpf, disculpen por no haberlo comentado), el evento que estoy manejando es SelectionChange

    jorge duran

    sábado, 8 de agosto de 2015 16:53