Resuscitare una form

mercoledì 12 gennaio 2005 - 15.15

AntCiar Profilo | Expert

Ho dichiarato all'interno del codice una vaiabile del tipo:

Private Pippo as new Form1


Da altre parti del codice richiamo la seguente istruzione

Pippo.show


Quando chiudo la Form1( ossia Pippo) e poi rieseguo la chiamata a Pippo.Show mi da come errore "impossibile accedere all'oggetto eliminato....."

Ho provato allora a fare questo

if Pippo is nothing = true
Pippo = new Form1
End if

Pippo.Show

la cosa lo stesso non funziona. Non entra nell'IF. Cosa devo mettere come valore da controllare sull'IF affinchè mi esegua "Pippo = new Form1"?
Grazie

trinity Profilo | Guru

di solito io per aprire una form scrivo questo codice:

Dim pippo as New Form1
pippo.ShowDialog(me)

per chiuderla semplicemente

me.close()

Ciao

GuardianOfTheFlame Profilo | Junior Member

ciao,
ho fatto una piccola prova e in debug si nota che quando chiudi la finestra, pippo non diventa Nothing, quindi il test Pippo is Nothing fallisce. Il test da fare è Pippo.IsDisposed=True ( ha una logica mi par di capire simile ad un dataset. Se cancelli una riga, in realtà non rilascia l'oggetto ma lo flagga come cancellato ):

If Pippo.IsDisposed = True Then
Pippo = New Form2
End If
Try
Pippo.Show()

Riciao
Matteo Salomone

AntCiar Profilo | Expert

Conosco il codice che hia scritto.

Riformulo il quesito perchè non ci siamo capiti.

In testa alla classe dichiaro

Private Pippo as new Form1

sull'evento clic di un bottone scrivo:
pippo.show


Faccio così in modo che se clicco ripetutamente sul bottone non apro tante istanze di Form1

Ora se all'interno di Pippo clicco sulla X di chiusura, Pippo viene distrutta.
Ora se ritorno a fare click sul bottone mi da, ovviamente, un errore perchè tento di aprire qualcosa di distrutto.

Quello che voglio fare io è controllare se Pippo non è stata distrutta In caso contrario, ridichiaro Pippo

All'inizio avevo pensato a:

If Pippo is nothing = true
pippo = new form1
end if

pippo.show

ma in questo modo, anche quando Pippo è distrutta, non entra all'interno dell'IF e quindi non la riesco ad instanziare. Conosci qualcosa da sostituire al posto di "Pippo is nothing = true" che riesca a vedere se la from è distrutta?

AntCiar Profilo | Expert

Grazie per l'aiuto. Funziona

trinity Profilo | Guru

Quale metodo funziona ed hai utilizzato?

AntCiar Profilo | Expert

ho usato il metodo

if pippo.isdisposed = true
pippo = new form1
end if
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5