hacer que el padre de un form sea otro form en otro proceso

21/07/2003 - 14:39 por Aitor | Informe spam
Hola,

¿Alguien sabe como hacer que el padre de un form sea un
panel contenido en otro form que corre en otro proceso?
(remoting). En COM usaba la API SetParent con el handle
del formulario, pero ¿es posible hacerlo en .NET sin usar
la API?. He probado con la propiedad parent del
formulario, ya que la referencia del panel puedo pasarla
sin problemas entre los dos procesos, pero sin embargo al
hacer:

frmFormRemoto.Parent = Me.Panel1

me da un error de serialización, ya que por lo visto la
clase ControlCollection del formulario no es serializable.
¿Sabe alguien como podría hacerse?

Gracias.

Preguntas similare

Leer las respuestas

#6 Aitor
23/07/2003 - 09:33 | Informe spam
creo que el problema no está relacionado con el Setparent
siquiera. Parece un tema de filosofía .NET, vamos, que los
servicios remoting no están pensados para proporcionar
objetos gráficos. Prueba a que un objeto corriendo en un
servidor te proporcione un form e intenta visualizarlo.
Verás que no hay manera, y me temo que es porque al igual
que los servicios web, no tienen un contexto gráfico.

Saludos.



SetParent te regresa null? Si es asi, que te da el
System.Runtime.InteropServices.Marshal.GetLastWin32Error?
-mike
MVP

"Aitor" wrote in message
news:017a01c3501b$8ef38950$
En todo caso con la API no funciona como en VB6, ya que el
siguiente código no es efectivo (y SI lo era antes):

Dim f As New Form2
f.TopLevel = False
SetParent(f.Handle.ToInt32, Me.Handle.ToInt32)
f.Show()

En VB6, este código habría incrustado el formulario f
dentro del formulario padre (Me), pero ahora no lo hace.


Creo que tendras que usar el API. Hay una razon en


particular que no
quieres usar el API (aparte de querer hacer 100%


en .NET :)).

-mike
MVP

"Aitor" wrote in message
news:07d101c34f85$310e20c0$

Hola,

¿Alguien sabe como hacer que el padre de un form sea un
panel contenido en otro form que corre en otro proceso?
(remoting). En COM usaba la API SetParent con el handle
del formulario, pero ¿es posible hacerlo en .NET sin usar
la API?. He probado con la propiedad parent del
formulario, ya que la referencia del panel puedo pasarla
sin problemas entre los dos procesos, pero sin embargo al
hacer:

frmFormRemoto.Parent = Me.Panel1

me da un error de serialización, ya que por lo visto la
clase ControlCollection del formulario no es




serializable.
¿Sabe alguien como podría hacerse?

Gracias.



.





.

Respuesta Responder a este mensaje
#7 Michael Giagnocavo [MVP]
23/07/2003 - 17:21 | Informe spam
Form es un subclass de MarshalByRefObject. Cuando llamas un metodo en
un form que esta "remoted", estas ejecutando en el servidor de ese
objecto. El form en si nunca es pasado al cliente. Aun asi,
SetParent debe de funcionar si los dos procesos estan en la misma
maquina.
-mike


"Aitor" wrote in message
news:07f501c350ec$c7c2c440$
creo que el problema no está relacionado con el Setparent
siquiera. Parece un tema de filosofía .NET, vamos, que los
servicios remoting no están pensados para proporcionar
objetos gráficos. Prueba a que un objeto corriendo en un
servidor te proporcione un form e intenta visualizarlo.
Verás que no hay manera, y me temo que es porque al igual
que los servicios web, no tienen un contexto gráfico.

Saludos.



SetParent te regresa null? Si es asi, que te da el
System.Runtime.InteropServices.Marshal.GetLastWin32Error?
-mike
MVP

"Aitor" wrote in message
news:017a01c3501b$8ef38950$
En todo caso con la API no funciona como en VB6, ya que el
siguiente código no es efectivo (y SI lo era antes):

Dim f As New Form2
f.TopLevel = False
SetParent(f.Handle.ToInt32, Me.Handle.ToInt32)
f.Show()

En VB6, este código habría incrustado el formulario f
dentro del formulario padre (Me), pero ahora no lo hace.


Creo que tendras que usar el API. Hay una razon en


particular que no
quieres usar el API (aparte de querer hacer 100%


en .NET :)).

-mike
MVP

"Aitor" wrote in message
news:07d101c34f85$310e20c0$

Hola,

¿Alguien sabe como hacer que el padre de un form sea un
panel contenido en otro form que corre en otro proceso?
(remoting). En COM usaba la API SetParent con el handle
del formulario, pero ¿es posible hacerlo en .NET sin usar
la API?. He probado con la propiedad parent del
formulario, ya que la referencia del panel puedo pasarla
sin problemas entre los dos procesos, pero sin embargo al
hacer:

frmFormRemoto.Parent = Me.Panel1

me da un error de serialización, ya que por lo visto la
clase ControlCollection del formulario no es




serializable.
¿Sabe alguien como podría hacerse?

Gracias.



.





.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida