Apertura form particolare

mercoledì 18 aprile 2012 - 23.57
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010

Lucchinet Profilo | Newbie

Ciao a tutti.
Il titolo non è esplicativo e mi scuso.

Ho questo problema:
Ho 3 form.
Form1 il pricipale, form2 e form3.
Dal form1 chiamo form2, tutto OK.
Dal form2 devo aprire form3 e chiudere form2.
In questo passaggio il compilatore di ma errore su "NullReferenceException" non gestita, solo nel caso in cui la chiamata del form3 avviene tramite il doubleClick su una griglia. Se la stessa porzione di codice viene eseguita tramite un Button o il KeyDown della grigla non avviene.
Non so come aggirare l'ostacolo, visto che il compilatore si blocca quado il debug conclude la sub del DoubleClick e non so se richiama dei metodi della griglia, che non trova più, o meno. In più non dovrebbe fare la stessa cosa con il KeyDown visto che è sempre un metodo della griglia, mentre il Button no?

Grazie per l'aiuto.

InsettoScoppiettato Profilo | Junior Member

L'evento double click su Form2 dovrebbe chiamare un metodo di Form1 che apre Form3. Rendi Form3 figlio di Form1 o comunque fallo partire tha un Thread gestito in un metodo di Form 1.
Alessandro Parma
Programmazione multipla scoposta con prognosi ancora da definire

massimo.missaglia Profilo | Newbie

Ciao,
ma se chiudi il form2 durante la chiamata al form3 non funziona?

Form3 frm3 = new Form3();
frm3.Show();
this.Close();
Massimo Missaglia
-------------------------------
www.MassimoMissaglia.com

Lucchinet Profilo | Newbie

Il problema non è nelle due motodologie. Funzionano entrambe.

L'errore me lo genera soltanto se l'apertura del Form3 avviende nell'evento DoubleClick della griglia.
Se lo stesso codice, duplicato per testare l'evento, avviene con l'evento Click del Button o KeyDown della griglia, l'errore non avviene, come se l'evento DoubleClick della griglia richiamasse altri metodi al suo interno alla conclusione del suo evento appunto DoubleClick e non trovando più allocato il Form2 e relativi oggetti, va in errore.

Se dall'evento DoubleClick richiamo l'evento Click del Button, l'errore si presenta comunque, a confermare che la griglia dopo l'esecuzione dell'evento DoubleClick richiami altri metodi al suo interno.

Proverò a posticipare l'evento di chiusura con un timer per permettere alla griglia di sbrigare i suoi cazzi.
Vi farò sapere se ho risolto con questo strano modo.
Chi avesse idee o soluzioni non esiti a postarle.

Grazie mille per l'aiuto.

InsettoScoppiettato Profilo | Junior Member

Il DblClick sulla griglia dove lo fai, sulle celle?
Che eventi sostiene la griglia? OnFOcus()?
Se entri in modifica sulle celle col doppio click poi hai comunque la generazione di un evento sulle celle che vengono modificate, ammesso che tu ne abia definito qualcuno.
Senza codice è dura verificarlo. Puoi dire quali eventi hai coperto?
Puoi ance controllare con un bpoint alla fine dell'evento dblclick quando esci da quella routine?
Alessandro Parma
Programmazione multipla scoposta con prognosi ancora da definire

Lucchinet Profilo | Newbie

Allora, della griglia uso solo gli eventi Click, DoubleClick e KeyDown.
Nella griglia non posso selezionare le celle ma solo le righe.

Fino all'esecuzione dell'ultima riga di codice del DoubleClick funziona tutto bene, ma quando avanzo con il debug riga a riga, all'uscita dall'evento genera l'errore.

Ho testato la cosa utilizzando un timer con 1/2 secondo di ritardo, azionato come ultima funzione del DoubleClick e al generare dell'evento tick, mi chiude il form perfettamente senza errori, quindi il problema è proprio in funzioni interne che la griglia svolge alla conclusione del DoubleClik.

Appunto il fatto che utilizzo una Griglia XtraGrid della DevExpress (mi sono dimenticato di menzionarlo prima).

InsettoScoppiettato Profilo | Junior Member

Non conosco XtraGrid, ma immagino che abbia bisogno di un dispose custom in modo che le risorse vengano deallocate correttamente.

Prova a guardare chosa prevede quella classe sul sito di DevExpress riduardo al Disposing.


Alessandro Parma
Programmazione multipla scoposta con prognosi ancora da definire

Lucchinet Profilo | Newbie

Non ci avevo pensato, funziona benissimo usando il dispose nell'evento DoubleClick .

Grazie per la dritta.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5