Chiudere tutti i form figlio

mercoledì 15 aprile 2009 - 22.49

willy_80 Profilo | Senior Member

Ciao a tutti,
Ho creato un programma in vb2008, in un form MDI ho inserito uno splitcontainer e ho una serie di altri form ai quali ho disattivato il minimizzedbox, il maximizedbox e il controlbox, in base ai comandi che l'utente richiama apro alcuni form in modalità child e vi associo come parent uno dei pannelli dello split.
Il mio problema è che quando chiudo il form mdi mi rimane attivo un processo e mi sono accorto che per risolvere il mio problema basta chiudere i vari form child aperti, esiste un comando da inserire nell'evento formclosing del form mdi che mi permetta di controllare quali sono i form ancora aperti e chiuderli?
Grazie a tutti.

alexmed Profilo | Guru

Ciao
Se sei partito con un form MDIParent1 nel MenuStrip sotto Finestre --> Chiudi tutte, dovresti trovare questo codice

For Each ChildForm As Form In Me.MdiChildren
ChildForm.Close()
Next

che dovrebbe risolverti il broblema

Ciao
alexmed

willy_80 Profilo | Senior Member

Ciao ho provato ad inserire il codice che mi hai postato nell'evento formclosing ma il debug non entra neanche nel ciclo.

alexmed Profilo | Guru

Ciao,
se metti questo codice

For Each ChildForm As Form In Me.MdiChildren
MsgBox(ChildForm.Name)
Next

in un button, cosa succede?

alexmed

willy_80 Profilo | Senior Member

Niente.....

Se può aiutare quando apro il form faccio così:

FrmFunEliminaPunti.MdiParent = Me
FrmFunEliminaPunti.Parent = Split2.Panel2
FrmFunEliminaPunti.Dock = DockStyle.Fill
FrmFunEliminaPunti.Show()

alexmed Profilo | Guru

Scusa, solo una precisazione:
come si chiama il processo che ti resta aperto?

PS
il nome completo.


alexmed

willy_80 Profilo | Senior Member

Il programma si chiama prova e il processo che mi rimane aperto è Prova.vshost.exe, se lo termino manualmente dal task manager si interrompe il debug

alexmed Profilo | Guru

Ciao
Aspettando eventuali smentite dai più esperti, ti posso dire che quel processo viene generato da Visual Studio quando apri un progetto.
Quindi nessuna paura.
Prova a chiudere e riaprire il progetto con TaskManager aperto

Ciao
alexmed

willy_80 Profilo | Senior Member

Si quel processo viene aperto quando lancio il debug e normalmente viene terminato quando termino il debug ma stavolta non viene terminato e ho notato che se chiudo il form aperto in modalità child e associato al pannello prima di chiudere il formmdi anche quel processo termina.
Infatti se chiudo direttamente l'mdi col child ancora nel pannello quando torno alla videata di vb l'icona di "run" del debug è disabilitata ed è abilitata quella di "stop" , in pratica il debug è ancora attivo.

alexmed Profilo | Guru

Ciao
Potresti fare ancora una prova
Nell'evento FormClosing puoi mettere il .Dispose dello SplitContainer

Ciao
alexmed

willy_80 Profilo | Senior Member

Ho provato il .dispose applicato apllo split e non è cambiato niente poi ho provato applicandolo ai pannelli dello split e non è cambiato niente neanche così
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