none
Evento click no se ejecuta en el primer click RRS feed

  • Pregunta

  • Hola! El evento click de un boton para cancelar la exportación de datos responde recién al segundo click. Dentro del procedimiento para exportar tengo "DoEventes()". La cancelación se produce pero recién al hacer click por segunda vez. Este es el codigo del boton

        private void btnCancelarExportar_Click(object sender, EventArgs e)
        {
          ExportWord.GetInstancia().Cancelar = true;
          btnCancelarExportar.Visible = false;
        }

    ExportWord es una clase (de instancia única) que tiene una propiedad bool "Cancelar" y un metodo "Exportar". Dentro de Exportar se chequea periódicamente el valor de Canelar, si es true se realizan las tareas necesarias y se cancela la operación. 

    También tengo un timer y un progressbar.

    ¿A que se debe este comportamiento?

    Muchas gracias.

    Saludos

    viernes, 17 de enero de 2014 0:30

Respuestas

  • hola

    si usas DoEvents es porque el proceso que estas realizando esta consumiendo mucho recurso de la pc lo cual seguramente no permita una respuesta libre a la interaccion con el usuario

    es por eso que no se acciona de forma inmediata el click

    vas a tener que poner ese proceso de exportacion usando Thread y asi no bloquear la UI para que responda de forma normal

    por supuesto el cancel deberia lanzar una cancelacion del thread

    How to: Create and Terminate Threads (C# Programming Guide)

    usando el doevents lo que quieres realizar es logico que tenga problemas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta AntiWork viernes, 17 de enero de 2014 20:38
    viernes, 17 de enero de 2014 10:15

Todas las respuestas

  • Hola:

     Pon un punto de interrupcion y ve siguiendo la ejecucion pulsando la tecla F11, porque a como veo no es el evento el que no te funciona si no las condiciones que tienes para la accion se realize.


    Saludos desde Monterrey, Nuevo León, México!!!

    viernes, 17 de enero de 2014 1:18
  • Gracias por tu respuesta.

    Puse un puntos de interrupcion en todas las lineas del evento y ocurre lo que dije: el primer click es ingorado y en el 2do click se ejecuta el evento click. 

    saludos

    viernes, 17 de enero de 2014 1:43
  • Lo puse al (btnCancelarExportar) botón para cancelar como "CancelBotton" del formulario y al presionar escape se procesa el evento. No necesita que se presione 2 veces. Asi que el problema es solo con el evento click.

    saludos

    viernes, 17 de enero de 2014 2:33
  • hola

    si usas DoEvents es porque el proceso que estas realizando esta consumiendo mucho recurso de la pc lo cual seguramente no permita una respuesta libre a la interaccion con el usuario

    es por eso que no se acciona de forma inmediata el click

    vas a tener que poner ese proceso de exportacion usando Thread y asi no bloquear la UI para que responda de forma normal

    por supuesto el cancel deberia lanzar una cancelacion del thread

    How to: Create and Terminate Threads (C# Programming Guide)

    usando el doevents lo que quieres realizar es logico que tenga problemas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta AntiWork viernes, 17 de enero de 2014 20:38
    viernes, 17 de enero de 2014 10:15
  • Hola. Decidí utilizar esto: backgroundworker

    Saludos

    viernes, 17 de enero de 2014 20:38