none
Iniciar temporizador cuando el mouse este estatico RRS feed

  • Pregunta

  • Buen dia, lo que quiero hacer es lo siguiente:

    Quiero que cuando el mouse este estatico por 10 segundos aparezca un messagebox avisandome que el mouse lleva 10 segundos sin moverse, de antemano muchas gracias


    Alvaro Fabian M:.

    lunes, 27 de febrero de 2017 20:32

Respuestas

  • Casi seguro es por culpa del MessageBox. Al presentar el mensaje, el sistema considera que el mouse se ha movido, puesto que la ventana que tenía el puntero del mouse pierde el foco, y el foco pasa al mensaje. Prueba a poner en lugar del MessageBox una llamada a System.Diagnostics.Debug.Write para que te escriba el mensaje en la ventanita de Output de Visual Studio. Con esto ya no deberían salir mensajes nada más que si de verdad mueves el ratón.

    Ojo, suele ser muy sensible, la más mínima vibración de la mesa hará que el ratón se mueva ligerísimamente, y se disparará el MouseMove. Si quieres disminuir la sensibilidad, guarda las coordenadas x,y del ratón en el MouseMove y a la siguiente vez compáralas con las x,y anteriores, y considera que el ratón se ha movido solamente cuando la variación de x,y sea mayor que el umbral que hayas decidido aplicar.

    martes, 28 de febrero de 2017 7:26

Todas las respuestas

  • Usa el evento MouseMove para guardar en una variable de clase la hora actual (con minutos, segundos y milisegundos). Añade un timer que se dispare bastante rápido, por ejemplo, cada 100 milisegundos. En el Tick del timer, compara la hora actual con la que salvaste en el MouseMove. Si difieren en más de 10 segundos, muestra el mensaje.

    lunes, 27 de febrero de 2017 23:08
  • Buen dia Alberto, ps te comento un problema que me surgio, talvez te entendi mal

    estoy en el primer paso donde obtengo la hora actual en el evento mouse move pero este evento se ejecuta en cada frame que el mouse este sobre el form aunque no se este moviendo, lo hice de la siguiente manera

     Private Sub AlmacenarHora() Handles Me.MouseMove
            HMS = System.DateTime.Now
            MessageBox.Show(HMS)

        End Sub

    y el mensaje me aparece en cada frame, como si fuera el evento mouse over,gracias por la ayuda


    Alvaro Fabian M:.


    martes, 28 de febrero de 2017 4:46
  • Casi seguro es por culpa del MessageBox. Al presentar el mensaje, el sistema considera que el mouse se ha movido, puesto que la ventana que tenía el puntero del mouse pierde el foco, y el foco pasa al mensaje. Prueba a poner en lugar del MessageBox una llamada a System.Diagnostics.Debug.Write para que te escriba el mensaje en la ventanita de Output de Visual Studio. Con esto ya no deberían salir mensajes nada más que si de verdad mueves el ratón.

    Ojo, suele ser muy sensible, la más mínima vibración de la mesa hará que el ratón se mueva ligerísimamente, y se disparará el MouseMove. Si quieres disminuir la sensibilidad, guarda las coordenadas x,y del ratón en el MouseMove y a la siguiente vez compáralas con las x,y anteriores, y considera que el ratón se ha movido solamente cuando la variación de x,y sea mayor que el umbral que hayas decidido aplicar.

    martes, 28 de febrero de 2017 7:26
  • Muchas gracias, me ayudo mucho tu explicacion

    Alvaro Fabian M:.

    sábado, 4 de marzo de 2017 16:51