none
Evento click de botón creado dinámicamente se ejecuta dos veces RRS feed

  • Pregunta

  • Buenas noches. 

    He creado un formulario donde incluyo un FlowLayoutPanel en cuyo interior creo dinamicamente diez botones mediante un for next. En el evento de pulsación de cualquier botón (evento común a todos ellos), llamo a un procedimiento que muestra la propiedad Text del botón pulsado.

    El problema es ¿por qué se ejecuta dos veces el evento click del ultimo botón?

    A continuación les muestro el código:

    Public Class Form1
    
        Private WithEvents boton As Button
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            ' Bucle que genera los 10 botones
            For n As Integer = 0 To 9
                Me.boton = New Button With {
                   .Size = New System.Drawing.Size(100, 50),
                   .Name = "btn" & n.ToString,
                   .Text = CStr("Botón " & n)
                   }
    
                ' Asignación del procedimieto al evento click
                AddHandler boton.Click, AddressOf Boton_click
    
                ' Se añade el nuevo botón al Panel
                Me.FlowLayoutPanel1.Controls.Add(Me.boton)
    
            Next
        End Sub
    
        Private Sub Boton_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles boton.Click
            Me.MuestraBotonPulsado(CType(sender, Button).Text)
        End Sub
    
        Private Sub MuestraBotonPulsado(nombreBoton As String)
            MsgBox(nombreBoton)
        End Sub
    
    End Class
    Gracias y un saludo a todos

    domingo, 7 de abril de 2019 22:25

Respuestas

Todas las respuestas