Foros del Web » Programación para mayores de 30 ;) » .NET »

Asignar subprocedimientos a controles creados en tiempo de ejecución

Estas en el tema de Asignar subprocedimientos a controles creados en tiempo de ejecución en el foro de .NET en Foros del Web. Hola a todos estoy creando una aplicación donde estoy creando un groupbox por cada registro traido de una base de datos y necesito asignarle muchos ...
  #1 (permalink)  
Antiguo 05/04/2012, 11:00
Avatar de freddwar  
Fecha de Ingreso: noviembre-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 1
Asignar subprocedimientos a controles creados en tiempo de ejecución

Hola a todos estoy creando una aplicación donde estoy creando un groupbox por cada registro traido de una base de datos y necesito asignarle muchos eventos a cada uno. Necesito que me expliquen por favor como hacerlo con al menos uno sencillo. Deseo que al pasar el mouse por un grupo éste cambie el color de fondo y al quitar el mouse de encima vuelva a su estado normal. Esto con todos. Esto es lo que llevo:

Código:
    Dim Grupo As GroupBox

    Private Sub CrearFormuluario()

        Dim daCand As New MySqlDataAdapter("SELECT * FROM tbCandidatos where CanYear='2012'", con)
        Dim dtCand As New DataTable

        daCand.Fill(dtCand)

        Dim posx = 10
        Dim posy = 50
        frmVotar = New Form

        For i = 0 To dtCand.Rows.Count - 1

            Grupo = New GroupBox
            Grupo.Name = "MyGrupo" & i
            Grupo.Top = posy
            Grupo.Left = posx
            Grupo.BackColor = Color.AliceBlue

            Dim lbNombreCand As New Label
            lbNombreCand.Top = 50
            lbNombreCand.Left = posx
            lbNombreCand.Text = dtCand.Rows(i).Item("CanNombre") & "  " & dtCand.Rows(i).Item("CanApellido")

            Grupo.Controls.Add(lbNombreCand)

            AddHandler Grupo.MouseMove, AddressOf Grupo_Move
            AddHandler Grupo.MouseLeave, AddressOf Grupo_Out
            AddHandler lbNombreCand.MouseMove, AddressOf Grupo_Move
            AddHandler lbNombreCand.MouseLeave, AddressOf Grupo_Out

            frmVotar.Controls.Add(Grupo)
            posy += 110
        Next

        frmVotar.Show()

    End Sub


    Private Sub Grupo_Move()
        Grupo.BackColor = Color.White
    End Sub

    Private Sub Grupo_Out()
        Grupo.BackColor = Color.AliceBlue
    End Sub
Desde ya muchas gracias por su ayuda, la verdad también necesito que al darle clic se guarde un registro del candidato por el cual votó el usuario, ojalá me puedan echar una manita pues el código que les muestro solo sirve con el último groupbox, y si le paso el mouse a otro gruopbox, igual cambia es el último.
  #2 (permalink)  
Antiguo 05/04/2012, 22:56
Avatar de elarrieux  
Fecha de Ingreso: abril-2012
Ubicación: Uruguay
Mensajes: 67
Antigüedad: 12 años, 7 meses
Puntos: 26
Respuesta: Asignar subprocedimientos a controles creados en tiempo de ejecución

Hola!

Yo crearia un GroupBox propio como este y lo mismo con el LabelBox que estas usando:

Código:
Public Class MyGrupo
    Inherits GroupBox

    Protected Overrides Sub OnMouseLeave(e As System.EventArgs)
        MyBase.OnMouseLeave(e)
        Me.BackColor = Color.AliceBlue
    End Sub

    Protected Overrides Sub OnMouseMove(e As System.Windows.Forms.MouseEventArgs)
        MyBase.OnMouseMove(e)
        Me.BackColor = Color.White
    End Sub
End Class
Sds.
  #3 (permalink)  
Antiguo 08/04/2012, 09:12
 
Fecha de Ingreso: noviembre-2008
Mensajes: 77
Antigüedad: 16 años
Puntos: 8
Respuesta: Asignar subprocedimientos a controles creados en tiempo de ejecución

Muchas gracias por este foro, me sirvió mucho este tema, pero... y si quisiera colocarle los controles que contendrá el 'Public Class MyGrupo', se puede hacer dentro de la estrucutura del class, o necesariamente tengo que crearlos uno a uno con for (Así como lo está haciendo nuestro amigo freddwar).

Gracias, creo que completar la clase como lo estoy planteando nos serviría a muchos. Saludos elarrieux
  #4 (permalink)  
Antiguo 08/04/2012, 13:27
Avatar de elarrieux  
Fecha de Ingreso: abril-2012
Ubicación: Uruguay
Mensajes: 67
Antigüedad: 12 años, 7 meses
Puntos: 26
Respuesta: Asignar subprocedimientos a controles creados en tiempo de ejecución

Hola!

No entendi lo de crear controles dentro del control MyGroup.

Explicame un poco mas y te ayudo.

Sds.
  #5 (permalink)  
Antiguo 11/04/2012, 09:01
Avatar de freddwar  
Fecha de Ingreso: noviembre-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 1
Respuesta: Asignar subprocedimientos a controles creados en tiempo de ejecución

Oye muchas gracias elarrieux, los groupbox prenden y apagan perfectamente pero lo que dice bluesky es cierto, necesito que al instanciar la clase mygrupo, yo pueda mandarle un valor (el codigo que viene de la BD) algo así:

grupo= new mygrupo(datatable1.rows(0).Item(0))

y que al agregar el grupo, este aparezca en el formulario con label adentro el cual muestre el codigo proveniente del datatable. En verdad estoy necesitando, muchas gracias por su ayuda.

PD: Perdón la demora al contestar, es que sigo trabajando en otros modulos, es para mi proyecto de grado.
  #6 (permalink)  
Antiguo 11/04/2012, 11:41
Avatar de elarrieux  
Fecha de Ingreso: abril-2012
Ubicación: Uruguay
Mensajes: 67
Antigüedad: 12 años, 7 meses
Puntos: 26
Respuesta: Asignar subprocedimientos a controles creados en tiempo de ejecución

Lo que tienes que hacer es agregarle una propiedad a la clase MyGrupo, algo como esto:

Public Class MyGrupo
Inherits GroupBox

Property id as String

Sub New(id as String)
Me.id = id
End Sub
End Class

Y listo! Cuando hagas esto:

grupo= new mygrupo(datatable1.rows(0).Item(0))

grupo.id te va a devolver el valor que le asignaste.

Sds.
  #7 (permalink)  
Antiguo 13/04/2012, 14:33
 
Fecha de Ingreso: noviembre-2008
Mensajes: 77
Antigüedad: 16 años
Puntos: 8
Respuesta: Asignar subprocedimientos a controles creados en tiempo de ejecución

Wow!!, Me han ayudado mucho, está excelente, ya me imagino las cosas que puedo hacer con esto, que Dios te bendiga elarrieux, muchas gracias.

Etiquetas: dinamicamente, procedimientos, vbnet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 09:35.