none
Una consulta, ¿cómo invoco a este método pasándole un parámetro? ¿se puede hacer esto que explico? RRS feed

  • Pregunta

  • Tengo definido el siguiente evento:

    Private Shared Sub Icono_MouseClick(sender As Object, e As MouseEventArgs) Handles Icono.MouseClick

    End Sub

    Y quiero invocarlo desde el código indicando que se simule la presión del botón izquierdo del mouse: MouseButtons.Left

    En el cuerpo del evento, consulto si se presionó el botón izquierdo, así

    If e.Button = MouseButtons.Left Then

    .........Si se presionó el botón izquierdo, hacer algo.

    End If

    Lo que no entiendo es cómo lo indico en el parámetro e del evento.

    ¿Es posible invocar dicho evento en el código especificando esa tecla del mouse?

    Y si es así, cómo lo especifico y en el parámetro sender qué pondría.



    • Editado James2016-2 sábado, 23 de marzo de 2019 5:19
    sábado, 23 de marzo de 2019 5:17

Respuestas

  • Sí, es posible. Tendrías que hacer un "New" para crear un objeto del tipo MouseEventArgs, rellenarle todas sus propiedades, y pasárselo al método.

    Pero aunque se puede hacer, no es una buena idea. Resulta confuso a la hora de hacer el mantenimiento del código cuando un manejador de eventos es invocado a mano sin que se haya producido el evento. Es su lugar, hay otra alternativa mejor:

    Refactoriza el código. Construye una subrutina que haga las operaciones deseadas, y traslada a esa subrutina las partes oportunas desde el Sub Icono_MouseClick. Y, lógicamente, desde el Icono_MouseClick llamas a esa subrutina, pasándole los parámetros que tú quieras en el formato que tú quieras, no se necesita que estén encapsulados en un objeto de tipo MouseEventArgs. Y después, desde el otro sitio en el que querías llamar al manejador del evento, lo que haces es llamar a la subrutina que acabas de construir.

    • Marcado como respuesta James2016-2 sábado, 23 de marzo de 2019 7:50
    sábado, 23 de marzo de 2019 7:13

Todas las respuestas

  • Sí, es posible. Tendrías que hacer un "New" para crear un objeto del tipo MouseEventArgs, rellenarle todas sus propiedades, y pasárselo al método.

    Pero aunque se puede hacer, no es una buena idea. Resulta confuso a la hora de hacer el mantenimiento del código cuando un manejador de eventos es invocado a mano sin que se haya producido el evento. Es su lugar, hay otra alternativa mejor:

    Refactoriza el código. Construye una subrutina que haga las operaciones deseadas, y traslada a esa subrutina las partes oportunas desde el Sub Icono_MouseClick. Y, lógicamente, desde el Icono_MouseClick llamas a esa subrutina, pasándole los parámetros que tú quieras en el formato que tú quieras, no se necesita que estén encapsulados en un objeto de tipo MouseEventArgs. Y después, desde el otro sitio en el que querías llamar al manejador del evento, lo que haces es llamar a la subrutina que acabas de construir.

    • Marcado como respuesta James2016-2 sábado, 23 de marzo de 2019 7:50
    sábado, 23 de marzo de 2019 7:13
  • Ah Ok, lo haré de esa otra manera entonces. Gracias.
    sábado, 23 de marzo de 2019 7:50