Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/07/2009, 16:05
kotosh
 
Fecha de Ingreso: mayo-2002
Mensajes: 486
Antigüedad: 22 años
Puntos: 0
Como llamo a esta funcion desde un formulario hijo

El metodo propuesto funciona de maravilla mientras se instancie desde el formulario MDI, sin embargo, si es que intento usar dicho metodo desde otro formulario, igual abre pero genera duplicados:
1. Form "ArticulosLista" (abierto desde el MDI)
2. Form "ArticulosLista" (abierto desde otro formulario hijo)

Lo ideal es que solo abra un formulario, sin importar si la llamada se hizo en el mdi o en el hijo. ¿alguna idea?


Esta clase esta creada en un archivo externo Acciones.cs
Cita:

public class AbrirForm
{
Dictionary<string, Form> Ins = new Dictionary<string, Form>(); // Se Gurdan aqui los formularios que hayan sido abiertos para no volver a llamarlos. Trabaja con OpenForm

public void OpenForm(String NombreForm)
{
try
{
Form Frm;
if (!Ins.TryGetValue(NombreForm, out Frm) || Frm.IsDisposed)
{
Frm = (Form)Activator.CreateInstance(null, NombreForm).Unwrap();
Ins[NombreForm] = Frm;
}
Frm.MdiParent = Index.ActiveForm;
Frm.Activate();
Frm.WindowState = FormWindowState.Normal;
Frm.Show();

}
catch (Exception e)
{
throw e;
}
}
}

Aqui el formulario hijo desde el cual llamo a ese metodo. En el form MDI llamo de la misma manera al mismo Form "ArticulosLista".
Cita:
// formulario hijo.cs
AbrirForm AbreF = new AbrirForm();


private void toolStripButton1_Click(object sender, EventArgs e)
{
AbreF.OpenForm("Presentacion.ArticulosLista");

}
__________________
Sistemass.com - Centro de capacitación profesional
http://www.sistemass.com

Última edición por kotosh; 08/07/2009 a las 16:14