Principales respuestas
mostrar formularios usando reflection C#

Pregunta
-
Estimada Comunidad,
Mi intencion es optimizar el codigo para abrir formularios desde un menu, pero los que ya estan instanciados solo deseo mostrarlos en forma maximizada.
He implementado el codigo de Leandro que esta en siguiente link:
http://ltuttini.blogspot.com/2013/02/winform-instanciar-form-conociendo-su.html
Yo lo he dejado de la siguiente manera:
private void ActivarFormulario(string formulario)
{
Assembly asm = Assembly.GetEntryAssembly();
Type formType = asm.GetType(formulario);
Form f1 = (Form)Activator.CreateInstance(formType);
f1.MdiParent = this;
f1.WindowState = FormWindowState.Maximized;
f1.Show();
}
Para verificar si esta instanciado puedo usar cualquiera de estas instrucciones:
Form frm = this.MdiChildren.FirstOrDefault(x => x is frmComRPCA);
o
Form frm = this.MdiChildren.OfType<frmComRPCA>().Where(x => x.Name == "frmComRPCA").FirstOrDefault();
pero la verdad no se como implementarlo,
La implementacion de llamada lo tengo asi:
private void mnuComRPCA_Click(object sender, EventArgs e)
{
ActivarFormulario("Rsa.frmComRPCA");
}
private void mnuComRPCB_Click(object sender, EventArgs e)
{
ActivarFormulario("Rsa.frmComRPCB");
}Cualquier ayuda que me puedan dar desde les quedo agradecido.
Saludos
Guivan
Respuestas
-
hola
El link que has puesto explica como instanciar el form por el nombre, pero si validas que el form ya esta instanciado solo tienes que usar el
frm.BringToFront();
para ponerlo en primer plano
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Obtener datos de propiedad de navegacion jueves, 15 de agosto de 2019 21:00
Todas las respuestas
-
hola
El link que has puesto explica como instanciar el form por el nombre, pero si validas que el form ya esta instanciado solo tienes que usar el
frm.BringToFront();
para ponerlo en primer plano
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Marcado como respuesta Obtener datos de propiedad de navegacion jueves, 15 de agosto de 2019 21:00
-
Gracias Leandro.
El codigo quedo asi
private void ActivarFormulario(string formulario)
{
Assembly asm = Assembly.GetEntryAssembly();
Type formType = asm.GetType(formulario);
Form frmExists = this.MdiChildren.FirstOrDefault(x => x.GetType() == formType);
if (frmExists == null)
{
Form frmNew = (Form)Activator.CreateInstance(formType);
frmNew.MdiParent = this;
frmNew.WindowState = FormWindowState.Maximized;
frmNew.Show();
}
else
{
frmExists.BringToFront();
frmExists.WindowState = FormWindowState.Maximized;
}
}
Saludos
Guivan