none
LLAMAR SUB-RUTINA CON BOTON RRS feed

  • Pregunta

  • hola!

    espero alguien me pueda ayudar con esto:

    En el programa realizo el llamado de una subrutina al presionar un boton, y en efecto se realiza correctamente el llamado pero necesito que mientras el botón este presionado la sunbrutina se siga "llamando" y al soltar el botón deje de "llamarse"...aparentemente es sencillo pero no lo logro, esto es lo que hago y se "llama" una vez solamente.

       

      Private Sub A1_MENOS_MouseDown(sender As Object, e As MouseEventArgs) Handles A1_MENOS.MouseDown

            mas_menos()  'subrutina

      End Sub

    p.d. le puse un While y se queda activa siempre y se traba el programa.

    espero su ayuda saludos!


    Mitzuko -.-

    domingo, 14 de agosto de 2016 0:38

Respuestas

  • Mitzuko -.-,

    Puedes utilizar los eventos MouseDown y MouseUp para detectar el momento en que la acción es realizada. Por ejemplo, vamos a crear un método que incremente un número en 1, la acción iniciará al momento en que el botón del mouse es presionado (MouseDown) y culminará una vez el botón haya sido liberado (MouseUp).

    Public Class Form1
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load        
                'Acciones en el evento Load
        End Sub
    
        Dim Numero As Integer = 0
        Dim Detener As Boolean = True
    
        Public Sub IniciarAccion()
    
            Numero = 0
    
            While (Detener = False)
                Numero += 1
    
                Application.DoEvents()
            End While
        End Sub
    
        Public Function DetenerAccion() As Integer
    
            Detener = False
    
            Return Numero
        End Function
    
        Private Sub btnLlamarFuncion_MouseDown(sender As Object, e As MouseEventArgs) Handles btnLlamarFuncion.MouseDown
            IniciarAccion()
        End Sub
    
        Private Sub btnLlamarFuncion_MouseUp(sender As Object, e As MouseEventArgs) Handles btnLlamarFuncion.MouseUp
            MessageBox.Show(DetenerAccion())
        End Sub
    End Class

    Tras ejecutarse el evento MouseDown se llama al procedimiento IniciarAcción que incrementa el valor de un número en 1 mientras la variable Detener sea Falso. El evento MouseUp llama al procedimiento DetenerAccion() que establece el valor de la variable Detener a True -deteniendo el ciclo- y retorna el valor acumulado.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 14 de agosto de 2016 1:25

Todas las respuestas

  • Mitzuko -.-,

    Puedes utilizar los eventos MouseDown y MouseUp para detectar el momento en que la acción es realizada. Por ejemplo, vamos a crear un método que incremente un número en 1, la acción iniciará al momento en que el botón del mouse es presionado (MouseDown) y culminará una vez el botón haya sido liberado (MouseUp).

    Public Class Form1
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load        
                'Acciones en el evento Load
        End Sub
    
        Dim Numero As Integer = 0
        Dim Detener As Boolean = True
    
        Public Sub IniciarAccion()
    
            Numero = 0
    
            While (Detener = False)
                Numero += 1
    
                Application.DoEvents()
            End While
        End Sub
    
        Public Function DetenerAccion() As Integer
    
            Detener = False
    
            Return Numero
        End Function
    
        Private Sub btnLlamarFuncion_MouseDown(sender As Object, e As MouseEventArgs) Handles btnLlamarFuncion.MouseDown
            IniciarAccion()
        End Sub
    
        Private Sub btnLlamarFuncion_MouseUp(sender As Object, e As MouseEventArgs) Handles btnLlamarFuncion.MouseUp
            MessageBox.Show(DetenerAccion())
        End Sub
    End Class

    Tras ejecutarse el evento MouseDown se llama al procedimiento IniciarAcción que incrementa el valor de un número en 1 mientras la variable Detener sea Falso. El evento MouseUp llama al procedimiento DetenerAccion() que establece el valor de la variable Detener a True -deteniendo el ciclo- y retorna el valor acumulado.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    domingo, 14 de agosto de 2016 1:25
  • Miles de gracias Willams, ha funcionado correctamente :)

    Mitzuko -.-

    lunes, 15 de agosto de 2016 17:07