Chiudere una finestra da un altra finestra

martedì 25 settembre 2007 - 14.27

IlCondor72 Profilo | Newbie

Ciao Ragazzi

Ho una finetra NuovoDocumentoTestata ed una altra finestra NuovoDocumentoDettaglio.
Uscendo dalla finestra NuovoDocumentoDettaglio non riesco a chiudere NuovoDocumentoTestata.

Il codice che uso è :
Private Sub Esci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Esci.Click
NegozoPrototipo.NuovoDocumentoTestata.ActiveForm.Close()
Me.Close()
End Sub
dentro NuovoDocumento Dettaglio.

NuovoDocumentoTestata chiama NuovoDocumetoDettaglio con il codice :
Dim frm As New NuovoDocumentoDettaglio
frm.Show()

Possibile che non riesco.

Si chiude NuovoDocumentoDettaglio ma non NuovoDocumentoTestata.

Grazie a Tutti, e scusate l banalità della richiesta.
Il Mio Sito : http://xoomer.alice.it/francescovattimo/
Il Mio Blog : http://francescovattimo.blogspot.com/

Xnetus Profilo | Junior Member

Per chiudere una finestra basta fare:

Private Sub Esci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Esci.Click
NuovoDocumentoDettaglio.Close()
End Sub

oppure, nel tuo caso per chiudere tutto:

Private Sub Esci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Esci.Click
Me.Close()
End Sub



http://blogs.dotnethell.it/Xnetus/

IlCondor72 Profilo | Newbie

Ciao

In entrambi i casi

Private Sub Esci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Esci.Click
NuovoDocumentoDettaglio.Close()
End Sub

Private Sub Esci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Esci.Click
Me.Close()
End Sub

riesco a chiudere solo la finestra corrente che è NuovoDocumentoDettaglio ma non la finestra madre che la ha generata.

Ciao
Il Mio Sito : http://xoomer.alice.it/francescovattimo/
Il Mio Blog : http://francescovattimo.blogspot.com/

Xnetus Profilo | Junior Member

Allora fai in questo modo:

Private Sub Esci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Esci.Click
End
End Sub




http://blogs.dotnethell.it/Xnetus/

IlCondor72 Profilo | Newbie

Ciao

Così facendo però chiude tutto.
Io vorrei chiudere solo le du2 finestre segnalate sopra.


Il Mio Sito : http://xoomer.alice.it/francescovattimo/
Il Mio Blog : http://francescovattimo.blogspot.com/

Xnetus Profilo | Junior Member

Prova con questo:

Private Sub Esci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Esci.Click
NuovoDocumentoTestata.Close()
End Sub

Dovrebbe funzionare, in questo modo chiudi la finestra, diciamo, "madre".


http://blogs.dotnethell.it/Xnetus/

IlCondor72 Profilo | Newbie

No niente

Private Sub Esci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Esci.Click
MsgBox("Prima")
NuovoDocumentoTestata.ActiveForm.Close()
MsgBox("Dopo")
End Sub

Ho paura che sia dovuto a come le maschere vengono richiamate, ovvero show e showdialog.

Certo che è terribile avere problemi anche per chiudere una finestra.




Il Mio Sito : http://xoomer.alice.it/francescovattimo/
Il Mio Blog : http://francescovattimo.blogspot.com/

Xnetus Profilo | Junior Member

Se scrivi un MsgBox dopo la procedura di chiusura e ovvio che non ti permette la chiusura del form.



http://blogs.dotnethell.it/Xnetus/

IlCondor72 Profilo | Newbie

Niente, Niente, Niente.

Ma perchè non mi chiude quella benedetta Form ?
Non mi accetta il comando !!!!!!


Il Mio Sito : http://xoomer.alice.it/francescovattimo/
Il Mio Blog : http://francescovattimo.blogspot.com/

Xnetus Profilo | Junior Member

Scusami fai semplicemente questo comando:

Private Sub Esci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Esci.Click
NuovoDocumentoTestata.Close()
End Sub

e non:

Private Sub Esci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Esci.Click
MsgBox("Prima")
NuovoDocumentoTestata.ActiveForm.Close()
MsgBox("Dopo")
End Sub


http://blogs.dotnethell.it/Xnetus/

IlCondor72 Profilo | Newbie

Fatto

Purtroppo il problemanon si risolve, non so che fare !!!!!

Il Mio Sito : http://xoomer.alice.it/francescovattimo/
Il Mio Blog : http://francescovattimo.blogspot.com/

SSUPERPIPPO Profilo | Guru

Ciao,

io farei così:

Dalla finestra chiamante richiami la finestra secondaria con il metodo ShowDialog e subito dopo l'istruzione ShowDialog inserisci l'istruzione me.close:

Dim frm As new Form2
frm.shodialog
me.close

In questo modo il form chiamante rimane in attesa della chiusura del form secondario e poi si chiude.

Prova e fammi sapere.

Ciao

Alessandro

http://blogs.dotnethell.it/alebadalin

Xnetus Profilo | Junior Member

Dovrebbe funzionare come le altre soluzioni che non gli funzionano.


http://blogs.dotnethell.it/Xnetus/

IlCondor72 Profilo | Newbie

Scusa

Ma così facendo chiudo la maschera madre sempre e comunque, non quando vglio io.


Il Mio Sito : http://xoomer.alice.it/francescovattimo/
Il Mio Blog : http://francescovattimo.blogspot.com/

SSUPERPIPPO Profilo | Guru

Mi sembrava di aver capito che volevi che al chiudersi della finestra secondaria si chiudesse anche quella chiamante... forse ho capito male...


http://blogs.dotnethell.it/alebadalin

IlCondor72 Profilo | Newbie

No

vorrei chiudere la finestra madre ma solo quando voglio io.
Non sempre.
Il Mio Sito : http://xoomer.alice.it/francescovattimo/
Il Mio Blog : http://francescovattimo.blogspot.com/

SSUPERPIPPO Profilo | Guru

Mi viene in mente questa soluzione:

Dim frm As new Form2
frm.shodialog

if frm.shodialog=Windows.Forms.DialogResult.OK then
me.close
end if

Nella finestra secondaria, all'evento dal quale vuoi scatenare la chiusura del form chiamante dovrai scrivere:

me.DialogResult=Windows.Forms.DialogResult.OK
me.close

In questo modo la finestra chiamante si chiude solo se il risultato della form secondaria è impostato su DialogResult.OK

Fammi sapere, ciao

Alessandro


http://blogs.dotnethell.it/alebadalin

Xnetus Profilo | Junior Member

A questo punto ci metti due tasti "Esci" e "Chiudi", quando si clicca su "Esci" chiudi anche la finestra madre mentre quando si clicca sul tasto "Chiudi" si chiude solo la finestra che è stata chiamata.


http://blogs.dotnethell.it/Xnetus/

IlCondor72 Profilo | Newbie

Ho tratto spunto dalla tua proposta solo che ho pensato di utilizzare una variabile globale.
Provo a riepilogare.

Form1 Chiama Form2 con ShowDialog
Form2 Chiama Form3 con ShowDialog

A questo punto uno dei due casi
Form3 vuole chiudere se stessa
Form3 vuole chiudere se stessa e Form2

Il codice Utilizzato è :

Form2 Chiama Form3 con ShowDialog
' ''''''''''''''''''''''''''''''''''''''''''''''
' Richiama la Tabella Ordine Testata
' ''''''''''''''''''''''''''''''''''''''''''''''
Dim frm As New Form3
frm.ShowDialog()
' ''''''''''''''''''''''''''''''''''''''''''''''

' ''''''''''''''''''''''''''''''''''''''''''''''
' Chiude Tutto
' ''''''''''''''''''''''''''''''''''''''''''''''
If VariabiliGlobali.ChiudiFinestraMadre Then
VariabiliGlobali.ChiudiFinestraMadre = False
Me.Close()
End If
' ''''''''''''''''''''''''''''''''''''''''''''''

Form3 Chiude se stessa
Private Sub Indietro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Indietro.Click
Me.Close()
End Sub

Form3 Chiude se stessa e la madre
Private Sub Esci_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Esci.Click
VariabiliGlobali.ChiudiFinestraMadre = True
Me.Close()
End Sub

In pratica il tutto è stato demandato all'utilizzo di una variabile Globale.

Adesso funziona ma la soluzione non mi sembra affatto elegante.
Ma è così difficile chiudere un maschera ?


Il Mio Sito : http://xoomer.alice.it/francescovattimo/
Il Mio Blog : http://francescovattimo.blogspot.com/
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