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
mentre la frmElencocodice: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); } }
ora il problema è che se faccio click sul pulsante di massimizzazione della finestra e poi sulla sua x per chiuderla, ricevo una eccezione: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 }
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
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.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();
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!

Rispondi quotando