Sto utilizzando questa funzione per chiudere il modulo esistente e aprire un nuovo modulo.Trova i moduli aperti nell'applicazione windows C#
Se non esiste un modulo di exixt, genera un errore.
Errore:
Obiettivo: System.Object MarshaledInvoke (System.Windows.Forms.Control, System.Delegate, System.Object [], Boolean)
Messaggio: Invoke o BeginInvoke non può essere chiamato su un controllo finché non è stata creata la maniglia della finestra.
Stack: a System.Windows.Forms.Control.MarshaledInvoke (chiamante controllo, metodo delegato, Object [] args, sincroni booleana)
quindi necessità di controllare qualsiasi forma aperta prima di chiudere il modulo per evitare la errore. Come?
static public void NewMainForm(Form main, bool ClosePreviousMain)
{
if (main != null)
{
Global.ActiveForm = main.Text;
if (ClosePreviousMain & MyContext.curMain != null)
{
MyContext.curMain.FormClosed -= new FormClosedEventHandler(main_FormClosed);
//Need to check for any form active and then close the form.
MyContext.curMain.Invoke(new Action(MyContext.curMain.Dispose));
}
MyContext.curMain = main;
MyContext.curMain.FormClosed += new FormClosedEventHandler(main_FormClosed);
MyContext.curMain.ShowDialog();
}
}