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

Formularios MDI

Estas en el tema de Formularios MDI en el foro de .NET en Foros del Web. Hola... Tengo la siguiente duda. Tengo un unico formulario mdi en mi aplicacion, para abrir formularios hijos directamente de el esta ok. Al hijo le ...
  #1 (permalink)  
Antiguo 16/02/2006, 08:12
 
Fecha de Ingreso: junio-2005
Mensajes: 165
Antigüedad: 18 años, 10 meses
Puntos: 0
Pregunta Formularios MDI

Hola...

Tengo la siguiente duda.

Tengo un unico formulario mdi en mi aplicacion, para abrir formularios hijos directamente de el esta ok. Al hijo le seteo frm.MdiParent = Me .

El problema es cuando de un hijo...abro otro formulario...no me queda como hijo del principal...

Hago
dim frmPrincipal as new frmPrincipal
frmNuevo.MdiParent = frmPrincipal

O sea cuando abro los hijos directamente del principal anda...pero cuando los abro de un hijo...no
  #2 (permalink)  
Antiguo 20/02/2006, 06:33
 
Fecha de Ingreso: junio-2005
Mensajes: 165
Antigüedad: 18 años, 10 meses
Puntos: 0
Alguien ????
  #3 (permalink)  
Antiguo 20/02/2006, 06:44
 
Fecha de Ingreso: enero-2005
Ubicación: Benifaió (Valencia)
Mensajes: 319
Antigüedad: 19 años, 3 meses
Puntos: 0
Prueba a poner frmnuevo.mdiparent=frmMDI
  #4 (permalink)  
Antiguo 20/02/2006, 11:38
 
Fecha de Ingreso: junio-2005
Mensajes: 165
Antigüedad: 18 años, 10 meses
Puntos: 0
No entiendo?

Si pongo frmMDI me dice que no esta definido...

Mi formulario padre es frmPrincipal
  #5 (permalink)  
Antiguo 20/02/2006, 11:44
 
Fecha de Ingreso: enero-2005
Ubicación: Benifaió (Valencia)
Mensajes: 319
Antigüedad: 19 años, 3 meses
Puntos: 0
Pues entoces seria frmNuevo.MdiParent=frmPrincipal

Simplemente tienes que asignarle el formulario MDI al que quieres mostrar como hijo.
  #6 (permalink)  
Antiguo 21/02/2006, 04:07
 
Fecha de Ingreso: octubre-2004
Mensajes: 27
Antigüedad: 19 años, 7 meses
Puntos: 1
en c# tienes que poner algo asi como
frmNuevo.MdiParent = this.Parent

supongo que en Visual basic sera algo asi como
frmNuevo.MdiParent = me.Parent

Todos los formularios tienen la propiedad parent que te dice cual es su padre. Prueba con eso ...
  #7 (permalink)  
Antiguo 21/02/2006, 07:34
 
Fecha de Ingreso: junio-2005
Mensajes: 165
Antigüedad: 18 años, 10 meses
Puntos: 0
Haber si logro explicarme:

Si hago esto:
dim frmPrincipal as frmPrincipal
frmNuevo.MdiParent = frmPrincipal

El formulario nuevo lo abre afuera del padre.


Y si hago:
dim frmPrincipal as new frmPrincipal
frmNuevo.MdiParent = frmPrincipal

No abre nada...llega al show..pero no lo abre

No se que me falta setear?
  #8 (permalink)  
Antiguo 21/02/2006, 11:00
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Instancias el nuevo formulario "hijo" que se va a abrir
Dim miForm as New frmNuevo

Le dices quien es su padre
miForm.MDIParent = Me 'Es Me porqué esto lo haces desde el padre..

Lo muestras
miForm.Show()

Cuál es el problema?
__________________
..:: moNTeZIon ::..
  #9 (permalink)  
Antiguo 21/02/2006, 11:17
 
Fecha de Ingreso: junio-2005
Mensajes: 165
Antigüedad: 18 años, 10 meses
Puntos: 0
Gracias por contestar...pero si leen mi consulta...

Yo no estoy en el formulario padre...estoy en un formulario hijo...que a su vez habre otro formulario.....

Quiero hacer que este nuevo formulario tome el padre del otro

Se entiende ?????

FORM PADRE -> FORM HIJO Esto lo hago bien....

FORM HIJO -> FORM NUEVO HIJO

Como le digo a es form que su padre es FORM PADRE
  #10 (permalink)  
Antiguo 21/02/2006, 11:39
 
Fecha de Ingreso: junio-2005
Mensajes: 165
Antigüedad: 18 años, 10 meses
Puntos: 0
Lo logre poniendole al FORM NUEVO HIJO como padre MDI.ActiveForm...

Ahi me lo tomo....
  #11 (permalink)  
Antiguo 22/02/2006, 06:23
 
Fecha de Ingreso: octubre-2004
Mensajes: 27
Antigüedad: 19 años, 7 meses
Puntos: 1
Yo creo que lo podrias solucionar de la siguiente manera (aparte de la solucion que has dado):

Instancias el nuevo formulario "hijo" que se va a abrir
Dim miForm as New frmNuevo

Le dices quien es su padre
miForm.MDIParent = Me.Parent (El padre del actual)

Lo muestras
miForm.Show()
  #12 (permalink)  
Antiguo 22/02/2006, 07:05
 
Fecha de Ingreso: junio-2005
Mensajes: 165
Antigüedad: 18 años, 10 meses
Puntos: 0
Si aplico tu solución me sale una ex La conversión especificada no es valida
  #13 (permalink)  
Antiguo 23/02/2006, 05:00
 
Fecha de Ingreso: octubre-2004
Mensajes: 27
Antigüedad: 19 años, 7 meses
Puntos: 1
Efectivamente, le trandras que hacer un casting ya que el Me.Parent es de tipo System.Windows.Forms.Control y el MDIParent es de tipo System.Windows.Forms.Form. El casting en c# seria algo asi:

miForm.MDIParent = (System.Windows.Forms.Form)Me.Parent

En Visual Basic no se como sera.
  #14 (permalink)  
Antiguo 24/02/2006, 03:46
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Disculpa reanimar, tienes razón, hay que leer primero...

Prueba con esto a ver:

Dim miForm as New frmNuevo
miForm.MDIParent = Me.MDIParent
miForm.Show()

A ver qué tal.
Saludos.
__________________
..:: moNTeZIon ::..
  #15 (permalink)  
Antiguo 09/11/2006, 08:39
 
Fecha de Ingreso: noviembre-2006
Mensajes: 1
Antigüedad: 17 años, 5 meses
Puntos: 0
ayuda

oe men pasate el codigo ps xD yo tbm taba viendo la forma de hacerlo pero no le veo solucion toy volando le pongo
frmnuevo=frprincipal
pero no me agarra una ayudita
  #16 (permalink)  
Antiguo 09/11/2006, 11:09
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Hola, si tienes el mismo problema que reanimar prueba como dije.
Aunque si no te va, puede ser porqué necesites hacer el casting como comenta p3k3.
Entonces quedaria algo así:
Código:
Dim miForm as New frmNuevo
miForm.MDIParent = CType(Me.MDIParent, System.Windows.Forms.Form)
miForm.Show()
A ver si hay suerte..
Saludos.
__________________
..:: moNTeZIon ::..
  #17 (permalink)  
Antiguo 07/02/2007, 16:20
 
Fecha de Ingreso: febrero-2007
Mensajes: 1
Antigüedad: 17 años, 2 meses
Puntos: 0
De acuerdo Re: Formularios MDI

hey moNTEZIon tienes mucha razon tio si me resulto, yo tenia el mismo problema que reanimar

este es el codigo que me funciono

Frmhijo hijo= new Frmhijo();
hijo.MdiParent =this.MdiParent;
hijo.Show();

este codigo esta en c#
  #18 (permalink)  
Antiguo 08/02/2007, 23:01
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 0
De acuerdo Re: Formularios MDI

Causa justo tenia ese problema y lo resolvi hoy.... lo únic que hice fue pasar el objeto creado en el MDI principal y los traslade a cada formulario HIJO de la siguiente manera:

En el MDIPadre (o como quieras llamarle)

Dim OFrm_Hijo As New Frm_Hijo(Me)
Me.IsMdiContainer = True
OFrm_Hijo.MdiParent = Me
OFrm_Hijo.Show()
OFrm_Hijo.BringToFront()

En El Frm_Hijo (si es que quieres llamar desde hijo a hijo y no quieres q se generen mas ventanas)

Dim MDI as form

Public Sub New(ByVal Padre As Form)
MDI = Padre
InitializeComponent()
End Sub

y si quieres llamar a otro form pues...

Dim OFrm_Hijo2 As New Frm_Hijo2(MDI)
OFrm_Hijo2.MdiParent = ParentForm
OFrm_Hijo2.Show()

teniendo q crear en el constructor del Frm_Hijo2 la misma estructura del Frm_Hijo y asi sucesivamente... Espero q te sirva a mi me funco. Hablamos
  #19 (permalink)  
Antiguo 08/02/2007, 23:03
 
Fecha de Ingreso: noviembre-2006
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 0
Exclamación Re: Formularios MDI

ahh... Recuerda q aun tienes ese objeto creado asi q lo único q estas haciendo ahi es volver a utilizarlo xq no serviría de nada crear otro nuevo. bytes.
  #20 (permalink)  
Antiguo 09/06/2008, 12:47
 
Fecha de Ingreso: abril-2008
Mensajes: 1
Antigüedad: 16 años
Puntos: 0
Respuesta: Formularios MDI

Cita:
Iniciado por moNTeZIon Ver Mensaje
Disculpa reanimar, tienes razón, hay que leer primero...

Prueba con esto a ver:

Dim miForm as New frmNuevo
miForm.MDIParent = Me.MDIParent
miForm.Show()

A ver qué tal.
Saludos.


Gracias a todos me sirvio bastante , el problema es que me parece como muy lenta esta solucion, porque al cargar el nuevo formulario se ve como un parpadeo que en verdad no me gusta mucho, si alguien sabe como solucionar esto se lo agradeceria.
muchas gracias
  #21 (permalink)  
Antiguo 09/07/2010, 23:38
 
Fecha de Ingreso: julio-2010
Mensajes: 2
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Formularios MDI

AUNQUE SEA UN POQUITO TARDE: AQUI TA LA RESPUESTA Y PROBADA
ESTE CODIGO ESTA EN C#: YA LA TRANSFORMACION A VB SE LAS DEJO DE TAREA JEJE

DESDE EL MDI(Form Principal o tambien llamado Padre) LLAMAS AL "FRM_HIJO1" DE ESTA MANERA:

frm_hijo1 frm1 = frm_hijo1();
frm1.MdiParent = this;
frm1Show();

LUEGO DEL "FRM_HIJO1" LLAMAS AL "FRM_HIJO2" PARA QUE APARESCA DENTRO DEL MDI(Form Principal o tambien llamado Padre) DE ESTA MANERA

frm_hijo2 frm2 = new frm_hijo2();
frm2.MdiParent = this.Parent.FindForm();
frm2.Show();

DESDE BOLIVIA A LAS NACIONES

Última edición por kcram; 10/07/2010 a las 00:08
  #22 (permalink)  
Antiguo 09/07/2010, 23:40
 
Fecha de Ingreso: julio-2010
Mensajes: 2
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Formularios MDI

AUNQUE SEA UN POQUITO TARDE: AQUI TA LA RESPUESTA Y PROBADA
ESTE CODIGO ESTA EN "C#"
YA LA TRANSFORMACION A "VB" SE LAS DEJO DE TAREA JEJE

DESDE EL MDI(Form Principal o tambien llamado Padre) LLAMAS AL "FRM_HIJO1" DE ESTA MANERA:

frm_hijo1 frm1 = frm_hijo1();
frm1.MdiParent = this;
frm1Show();

LUEGO DEL "FRM_HIJO1" LLAMAS AL "FRM_HIJO2" PARA QUE APARESCA DENTRO DEL MDI(Form Principal o tambien llamado Padre) DE ESTA MANERA

frm_hijo2 frm2 = new frm_hijo2();
frm2.MdiParent = this.Parent.FindForm();
frm2.Show();

DESDE BOLIVIA AL MUNDO

Última edición por kcram; 10/07/2010 a las 00:09
  #23 (permalink)  
Antiguo 24/02/2011, 10:15
Avatar de natsumi_tsujimoto89  
Fecha de Ingreso: febrero-2011
Mensajes: 1
Antigüedad: 13 años, 2 meses
Puntos: 0
Información Respuesta: Formularios MDI

Miren yo estaba buscando lo mismo pero logre que desde un formulario hijo se abriera otro form, pero dentro del mdi con el siguiente codigo (Ojo esto esta probado)

mdiparent1 (es el formulario padre)
form1(es formulario hijo)
form2(es formulario que se llama desde el formulario hijo (form1)

en el codigo del form1. en el boton de donde estes llamando al form2 pon el siguiente codigo

form2.mdiparent = mdiparent1
form2.show

recuerda que en donde sale mdiparent1 debes poner el nombre del formulario padre que tu tienes..

Suerte a todos..

espero les sirva!!!

  #24 (permalink)  
Antiguo 14/06/2011, 11:10
Avatar de galletica12  
Fecha de Ingreso: mayo-2011
Ubicación: Tekax, Yucatán
Mensajes: 213
Antigüedad: 13 años
Puntos: 8
Respuesta: Formularios MDI

ejemplo frmusuario use = new frmusuario();
use.MdiPartent = this;
use.show();
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 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 16:37.