Problema con eventos de controles creados en ejecuci贸n
Estoy iniciandome con VB.NET y me ha surgido un problemilla q, debido a mi inexperiencia, no se como resolver.
El asunto es q en un formulario creo controles en ejecuci贸n (no en dise帽o). Tengo una zona donde se crean diapositivas a partir de imagenes contenidas en un directorio.
Habr谩, por tanto, tantas diapositivas como imagenes (0-100 diapositivas).
Quiero q al hacer doble click sobre una imagen se abra en un formulario a parte. El problema es q como no existen en dise帽o no puedo hacer el codigo para el evento.
Las diapositivas, segun se van creando (picturebox), las voy metiendo en un array de pictureboxes. Tambi茅n he probado con colecciones.
驴Alguien me puede echar un cable?
Saludos y gracias por adelantado :-)
El asunto es q en un formulario creo controles en ejecuci贸n (no en dise帽o). Tengo una zona donde se crean diapositivas a partir de imagenes contenidas en un directorio.
Habr谩, por tanto, tantas diapositivas como imagenes (0-100 diapositivas).
Quiero q al hacer doble click sobre una imagen se abra en un formulario a parte. El problema es q como no existen en dise帽o no puedo hacer el codigo para el evento.
Las diapositivas, segun se van creando (picturebox), las voy metiendo en un array de pictureboxes. Tambi茅n he probado con colecciones.
驴Alguien me puede echar un cable?
Saludos y gracias por adelantado :-)
El problema aqui no es como guardar los controles, puedes guardarlos en un array o como mejor te vaya.
lo que debes hacer es asignar manualmente la funcion que recojera el evento cada vez que creas un control nuevo.
seria una cosa asi:
Clase.Evento += new ClaseEventHandler(funcion);
donde ClaseEventHandler es un delegate declarado previamente, Evento es el evento en si y funcion es la funcion que recogera el evento que debe tener los mismos parametros que el delegate.
aqui esta mucho mas claro:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconeventsmini-sample.asp
y tambien puedes crear cualquier evento en el desginer y mirar que codigo ha creado el visual studio para controlarlo (puedes poner un picturebox, hacer el codigo del evento doble click y ver exactamente que codigo se ha generado), creo que asi veras muy claro lo que tienes q hacer.
espero q sirva de ayuda
lo que debes hacer es asignar manualmente la funcion que recojera el evento cada vez que creas un control nuevo.
seria una cosa asi:
Clase.Evento += new ClaseEventHandler(funcion);
donde ClaseEventHandler es un delegate declarado previamente, Evento es el evento en si y funcion es la funcion que recogera el evento que debe tener los mismos parametros que el delegate.
aqui esta mucho mas claro:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconeventsmini-sample.asp
y tambien puedes crear cualquier evento en el desginer y mirar que codigo ha creado el visual studio para controlarlo (puedes poner un picturebox, hacer el codigo del evento doble click y ver exactamente que codigo se ha generado), creo que asi veras muy claro lo que tienes q hacer.
espero q sirva de ayuda
Pues muchas gracias jm. Me ha servido de mucha ayuda.
Voy a explicar por encima c贸mo lo he solucionado por si a alguien le es de utilidad.
Me he creado un procedimiento llamado AsignarEventos al q se le pasa el control q generar谩 el mismo:
Private Sub AsignaEventos(ByVal control As Control)
AddHandler control.Click, AddressOf Me.Control_Click
End Sub
Posteriormente he puesto el c贸digo del evento y fin:
Private Sub Control_Click(ByVal sender As Object, ByVal e As System.EventArgs)
...
End Sub
Saludos
Voy a explicar por encima c贸mo lo he solucionado por si a alguien le es de utilidad.
Me he creado un procedimiento llamado AsignarEventos al q se le pasa el control q generar谩 el mismo:
Private Sub AsignaEventos(ByVal control As Control)
AddHandler control.Click, AddressOf Me.Control_Click
End Sub
Posteriormente he puesto el c贸digo del evento y fin:
Private Sub Control_Click(ByVal sender As Object, ByVal e As System.EventArgs)
...
End Sub
Saludos
