Reflection + MDIChild

12/08/2008 - 18:03 por Napoleon | Informe spam
Saludos,

Espero q me puedan ayudar,,
la cuestion es que tengo un mdi principal, en el que refiero algunos
proyectos que tengo diseñados varios formularios, y la coas es que necesito
invocar al formulario en el mdi principal, llamandolo por medio de un metodo
publico que lo cree en cada formulario,llamado mostrar, el que me recibe dos
parametros
Public void Mostrar(Info info,form mdiParent)
{
this.MdiParent = mdiParent;
this.Show();
}
La idea es poder llamar a cualquier formulario, opr medio de reflection,
pero la verad he visto cisertos articulos, y mi poca experiencia con este
tem,a, me dificulta, el solucionarlo,,
Agradeceria una mano en este tema,,
De ante mano, gracia a todos..
 

Leer las respuestas

#1 Alberto Poblacion
13/08/2008 - 21:10 | Informe spam
"Napoleon" wrote in message
news:
Espero q me puedan ayudar,,
la cuestion es que tengo un mdi principal, en el que refiero algunos
proyectos que tengo diseñados varios formularios, y la coas es que
necesito
invocar al formulario en el mdi principal, llamandolo por medio de un
metodo
publico que lo cree en cada formulario,llamado mostrar, el que me recibe
dos
parametros
Public void Mostrar(Info info,form mdiParent)
{
this.MdiParent = mdiParent;
this.Show();
}
La idea es poder llamar a cualquier formulario, opr medio de reflection,
pero la verad he visto cisertos articulos, y mi poca experiencia con este
tem,a, me dificulta, el solucionarlo,,



Si tienes ya creada una instancia de la clase del formulario, puedes
llamar por reflexión al método Mostrar asi:

Form f = new MiFormulario(); //Por ejemplo
...
Type t = f.GetType();
MethodInfo mi = t.getMethod("Mostrar");
mi.Invoke(f, new object[]{info, this});

De todas formas, no es muy elegante. Sería preferible que declararas un
Interface con tu método Mostrar, por ejemplo IHijoMdi, y que todos tus
formularios que tienen el "Mostrar" implementen ese interfaz. Si lo haces
asi, la llamada es más sencilla (y eficiente):

IHijoMdi h = new MiFormulario();
h.Mostrar(info, this);

Preguntas similares