none
Como hacer para que el algoritmo no se repita tantas veces se haga click(usando el evento click) si ya arrojo un resultado.?

    Pregunta

  • Hola, lo que pasa es que tengo un código, que me funciona bien! pero no quisiera que me arrojara un resultado erróneo en caso de que el usuario se llegara a equivocar y haga dos veces click en el botón que desencadena dicha función. he notado que no siempre pasa esto EJ: hice la siguiente prueba sencilla y me funciono

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            TextBox1.Text = "1"
        End Sub

    no importa tantas veces le de click al boton, solo se ejecuta una vez. esto me gustaría que hiciera con cualquier código que ponga en el evento click. Gracias.


    Renzo Rivera

    domingo, 2 de abril de 2017 3:00

Respuestas

  • Hola Renzo19

    Lo que podrías hacer es al dar click desactivar el botón y cuando termine toda la instrucción volver a activarlo.

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Cursor.Current = Cursors.WaitCursor
            Button1.Enabled = False
            'Codigo que deseas realizar
            Button1.Enabled = True
            Cursor.Current = Cursors.Default
        End Sub

    Por cierto, agregúe el Cursor.Current = Cursors.WaitCursor, esto lo que hace es mostrar el cursor en espera como para que le des una idea al usuario que se esta procesando la petición. Al final se coloca el Cursors.Default paa volver a su estado normal.

    Saludos.


    Si logré resolver tu consulta, no olvides votar como útil y/o marcar como respuesta.


    • Editado Brayan De La Cruz domingo, 2 de abril de 2017 3:18
    • Marcado como respuesta Renzo19 domingo, 2 de abril de 2017 3:25
    domingo, 2 de abril de 2017 3:13
  • Hola Renzo19,

    La verdad no entiendo muy bien tu pregunta, ¿Quieres ejecutar una vez la acción de un botón? En caso sea correcto, porque no deshabilitas el botón para que no lo vuelva a presionar?

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    
        'Acciones ...
    
        'Deshabilitamos el botón para que no vuelva a dar click
        CType(sender, Button).Enabled = False
    End Sub

    - Según tu ejemplo, podrías hacer : Si el valor de la propiedad .Text de tu TextBox no es igual a "1" cambiamos el valor a "1", y si su valor ya es "1" no hacemos nada.

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        If TextBox1.Text <> "1" Then
            TextBox1.Text = "1"
        End If
    End Sub

    O incluso, podrías crearte una variable 'flag' que indique si el botón ya ha sido presionado o no, algo como :

    Dim presionado As Boolean = False
    
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    
        'Si no ha sido presionado (si es False)
        If Not presionado Then
    
            MessageBox.Show("Ejecutando acciones...")
    
            'Cambiamos el valor
            presionado = True
        Else
            MessageBox.Show("El botón ya fue presionado..")
        End If
    
    End Sub


    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Renzo19 domingo, 2 de abril de 2017 3:25
    domingo, 2 de abril de 2017 3:16

Todas las respuestas

  • Hola Renzo19

    Lo que podrías hacer es al dar click desactivar el botón y cuando termine toda la instrucción volver a activarlo.

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Cursor.Current = Cursors.WaitCursor
            Button1.Enabled = False
            'Codigo que deseas realizar
            Button1.Enabled = True
            Cursor.Current = Cursors.Default
        End Sub

    Por cierto, agregúe el Cursor.Current = Cursors.WaitCursor, esto lo que hace es mostrar el cursor en espera como para que le des una idea al usuario que se esta procesando la petición. Al final se coloca el Cursors.Default paa volver a su estado normal.

    Saludos.


    Si logré resolver tu consulta, no olvides votar como útil y/o marcar como respuesta.


    • Editado Brayan De La Cruz domingo, 2 de abril de 2017 3:18
    • Marcado como respuesta Renzo19 domingo, 2 de abril de 2017 3:25
    domingo, 2 de abril de 2017 3:13
  • Hola Renzo19,

    La verdad no entiendo muy bien tu pregunta, ¿Quieres ejecutar una vez la acción de un botón? En caso sea correcto, porque no deshabilitas el botón para que no lo vuelva a presionar?

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    
        'Acciones ...
    
        'Deshabilitamos el botón para que no vuelva a dar click
        CType(sender, Button).Enabled = False
    End Sub

    - Según tu ejemplo, podrías hacer : Si el valor de la propiedad .Text de tu TextBox no es igual a "1" cambiamos el valor a "1", y si su valor ya es "1" no hacemos nada.

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        If TextBox1.Text <> "1" Then
            TextBox1.Text = "1"
        End If
    End Sub

    O incluso, podrías crearte una variable 'flag' que indique si el botón ya ha sido presionado o no, algo como :

    Dim presionado As Boolean = False
    
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    
        'Si no ha sido presionado (si es False)
        If Not presionado Then
    
            MessageBox.Show("Ejecutando acciones...")
    
            'Cambiamos el valor
            presionado = True
        Else
            MessageBox.Show("El botón ya fue presionado..")
        End If
    
    End Sub


    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Renzo19 domingo, 2 de abril de 2017 3:25
    domingo, 2 de abril de 2017 3:16
  • Gracias! me  ayudo.

    Renzo Rivera

    domingo, 2 de abril de 2017 3:26