MVP´s donde estais?

13/06/2005 - 10:10 por Joaquin | Informe spam
Hola chicos!
Os cuento, estoy haciendo una aplicacion windows y no se como pasar
informacion entre un componente (o control de usuario, no se si es lo mismo)
creado por mi y el formulario que los contiene, para ser mas explicativo el
problema es el siguiente:

Mis componente tienen un label, un boton y una variable entero; en el form
tengo una serie de comboBox para realizar la busqueda en la base de datos,
luego en el form tambien tengo un boton buscar, que al darle click lo que
hace (dinamicamente) es crear tantos componentes como ocurrencias devuelva
la consulta, y los va insertando en un panel, ahora mi problema es que
quiero, que al hacer click en el boton del componente ejecute un metodo del
form que recibe la variable entero (antes citada) del componente, espero
que se entienda.

Muchas Gracias!!

Preguntas similare

Leer las respuestas

#1 Tristan
13/06/2005 - 14:57 | Informe spam
Os cuento, estoy haciendo una aplicacion windows y no se como pasar
informacion entre un componente (o control de usuario, no se si es lo mismo)



No, no es lo mismo. Todo UserControl es un Control que a su vez es heredero
de Component, pero no todo Component es un Control. Un Control es un
componente que tiene ventana.

quiero, que al hacer click en el boton del componente ejecute un metodo del
form que recibe la variable entero (antes citada) del componente



Yo lo plantería de otra forma. En lugar de llamar a un método del formulario
directamente, que es fácil de hacer, pero no recomendable, utiliza un evento.
Así reduces la interdependiencia entre formulario y control. Así funcionan
siempre los controles estandar para informar de un suceso al formulario.

En tu usercontrol:

Public Event BotonClick(ByVal indice As Integer)

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
RaiseEvent BotonClick(mIndice)
End Sub

Donde mIndice sería la variable entera que tiene tu control, imagino que
asociada a una propiedad.

En tu formulario, solo necesitas tratar este nuevo evento. Para crear los
controles en un bucle, utiliza AddHandler para suscribirte al evento.

Tal y como te decía, aunque no te lo recomiendo, podrías llamar directamente
al método del formulario:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs)
Handles Button1.Click
Me.ParentForm.Método(params) '
Con strict Off
DirectCast(Me.ParentForm, TuFormulario).método(params) ' Con Strict On
End Sub

Por cierto, respecto a lo de que donde estamos los MVP's.

Por si lo desconoces, los MVP somos simples colaboradores del foro. No
tenemos ningún tipo de obligación, no nos paga nadie, ni nada por el estilo.
Es un simple reconocimiento (como todo, discutible) de MS a nuestra
colaboración. Quiero decir que no tienes por que esperar ni más, ni mejores
respuestas de un MVP que las de cualquier otro del foro.

Juan Carlos Badiola Saiz
MVP - C#
Respuesta Responder a este mensaje
#2 Tristan
13/06/2005 - 15:01 | Informe spam
Perdón, hay un error en el mensaje anterior. Por un momento olvidé que el
"Late Binding" solo funciona en vb.net sobre la clase Object:

En la última parte te explicaba como llamar al método del formulario
directamente.

En la sentencia para Strict Off. En lugar de:

Me.ParentForm.Método(params)

Debe ser:

DirectCast(Me.ParentForm, Object).Método(params)

Juan Carlos Badiola Saiz
MVP - C#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida