ciao a tutti, ho bisogno di aiuto per questo problema..

sto preparando una applicazione winform di tipo MDI, la frmMain è in sostanza questo con l'aggiunta dei gestori dei menu

codice:
public partial class frmMain : Form
{
    private int _childFormNumber = 0;

    public int childFormNumber
    {
        get
        {
            return _childFormNumber;
        }
        set
        {
            _childFormNumber = value;
        }
    }

    public frmMain()
    {
        InitializeComponent();
    }

    private void ShowNewForm(object sender, EventArgs e)
    {
        // Crea una nuova istanza del form figlio.
        Form childForm = new frmElenco(childFormNumber);

        // Imposta il form come figlio di questo form MDI prima di visualizzarlo.
        childForm.MdiParent = this;
        childForm.Text += " " + ((childFormNumber++) + 1);
        childForm.Show();
    }

    private void frmMain_Load(object sender, EventArgs e)
    {
        //  al caricamento apre subito una finestra ricerca
        ShowNewForm(sender, e);
    }
}
mentre la frmElenco

codice:
public partial class frmElenco : Form
{
    public frmElenco()
    {
        InitializeComponent();
    }

    //  numero della form intesa come figlia della MDIparent
    private int _numeroFiglio = 0;

    public int numeroFiglio
		{
			get
			{
                return _numeroFiglio;
			}
		}

    public frmElenco(int numero)
    {
        InitializeComponent();

        //  assegna il numero interno
        _numeroFiglio = numero;
    }
    
    // eccetera
}
ora il problema è che se faccio click sul pulsante di massimizzazione della finestra e poi sulla sua x per chiuderla, ricevo una eccezione:

System.ObjectDisposedException non è stata gestita
Message="Impossibile accedere a un oggetto eliminato.\r\nNome oggetto: 'Icon'."
Source="System.Drawing"
ObjectName="Icon"


con il cursore in frmElenco su:
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}

Avete qualche idea su questo comportamento?

Parlo dell'MDI perchè il problema si presenta anche se leggermente diverso in un altro caso. Dalla frmElenco io apro altre finestre con

codice:
frmPersonale frmP = new frmPersonale(matricola, nominativo);
//  la scheda deve rimanere all'interno della frmMain e comparire nell'elenco finestre
frmP.MdiParent = this.MdiParent;
frmP.Show();
e se ripeto l'operazione (massimizza e poi chiudi) ottengo che il prog. va in crash con uno sfarfallio continuo, sembra che tenti di ridisegnare la form sottostante e poi quella che ho appena chiuso, ecc.

vi prego una mano..

ps: ovviamente se non clikko mai su 'massimizza' tutto funziona bene, e anche se tolgo la riga

frmP.MdiParent = this.MdiParent;

???
dulcis in fundo non ho problemi se dopo aver massimizzato, prima di chiudere la form la riporto alla dimensione originale!