none
Manejar eventos de botones creados dinamicamente RRS feed

  • Pregunta

  • Hola de nuevo, avanzando en el proyecto que estoy, tengo un codigo para generar botones dinamicamente dentro de un panel, el inconveniente que tengo son dos, necesito una forma de acomodar los botones dentro del panel, algo como un Layout en java, ya que podran ser mas o menos botones y quiero que ocupen todo el panel.

    Lo segundo es que necesito manejar los enventos click en los botones creados, pero no de manera individual, mas bien pensaba en si se puede declarar un listener y simplemente preguntar por el nombre del boton para saber la informacion que contenia.

    Como digo no me gustaria manejarlo individualmente, porque es variable la cantidad de botones dependiendo de los datos que tenga mi BD.

    Aca les dejo una parte del codigo de los botones.

    For Each item As AreaEntidad In lst
                i = i + 1
                foo = New Button() 
                foo.Name = sName + CStr(i)
                foo.Text = item.Area_nombre
                foo.Dock = DockStyle.Top             
                Me.pnlAreas.Size = Me.Size
                Me.pnlAreas.Controls.Add(foo)         
    Next

    viernes, 27 de junio de 2014 15:35

Respuestas

  • Para conectar un evento a todos los botones, mete esto dentro del For:

    AddHandler(foo.Click, AddressOf MiRutina)

    y luego declara el manejador del evento:

    Private Sub MiRutina(sender as Object, e as EventArgs)

    El parámetro "sender" trae dentro el botón en el que han hecho click. Puedes hacerle un CType para convertirlo de Object a Button y luego leer sus propiedades, como por ejemplo .Text, para saber qué botón pulsaron.

    viernes, 27 de junio de 2014 17:03

Todas las respuestas

  • Para conectar un evento a todos los botones, mete esto dentro del For:

    AddHandler(foo.Click, AddressOf MiRutina)

    y luego declara el manejador del evento:

    Private Sub MiRutina(sender as Object, e as EventArgs)

    El parámetro "sender" trae dentro el botón en el que han hecho click. Puedes hacerle un CType para convertirlo de Object a Button y luego leer sus propiedades, como por ejemplo .Text, para saber qué botón pulsaron.

    viernes, 27 de junio de 2014 17:03
  • hola alberto poblacion

    como asi lo puedes convertir sender a un object boton y luego identificar por el texto del boton como tiene que responder cada boton puedes poner un ejemplo porfavor

    jueves, 11 de junio de 2015 15:57
  • como asi lo puedes convertir sender a un object boton [...]


    Private Sub MiRutina(sender as Object, e as EventArgs)
        Dim b as Button = CType(sender, Button)
        If b.Text=... Then ...
    End Sub

    jueves, 11 de junio de 2015 18:08