Form close

venerdì 07 maggio 2004 - 12.21

pecos81 Profilo | Junior Member

Ciao a tutti,
ecco il mio nuovo problema:
ho una form che mi consente di vedere ad es una lista di clienti e sulla quale posso fare aggiunta, modofica, eliminazione, e salvataggio record.
Se sono ad es in modifica e clicco sul mio CmdEsci, faccio la sana domanda: "Vuoi salvare le modifiche?" e, se la risp è si, salvo. Se chiudo il form dalla X in alto a dx, intercetto l'evento mybase.close e controllo se devo fare il salvataggio delle modifiche. Il salvataggio lo esegue, ma sia che risponda si, sia che risponda no dopo mi chiude il form (a ragion veduta, visto che intercetto l'evento di chiusura).
Come devo fare per far sì che se alla richiesta di salvataggio, se gli dico "annulla" non mi chiuda il form?
Ecco come ora intercetto la pressione della X di chiusura del form:

Private Sub Form_Close(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
CmdAnnulla_Click(Me, e) 'Cmd dove chiedo se salvare le eventuali modifiche
End Sub

Ciao e grazie

Andy Profilo | Senior Member

Ciao Pecos81..la soluzione al tuo broblema è su msdn, sottol 'argomento del'evento "Form.Closing"..cito una parte...

"...L'evento Closing si verifica alla chiusura del form. Quando un form viene chiuso vengono liberate tutte le risorse create all'interno di tale oggetto e il form viene eliminato. Se si annulla l'evento il form rimane aperto. Per annullare la chiusura di un form impostare la proprietà Cancel dell'oggetto CancelEventArgs passato al gestore eventi su true.

Quando un form è visualizzato come finestra di dialogo modale, facendo clic sul pulsante Chiudi, ovvero il pulsante con la X visualizzato nell'angolo superiore destro del form, il form viene nascosto e la proprietà DialogResult viene impostata su DialogResult.Cancel. Per eseguire l'override del valore assegnato alla proprietà DialogResult quando l'utente fa clic sul pulsante Chiudi, impostare la proprietà DialogResult in un gestore eventi per l'evento Closing del form..."

Prova a leggere l'argomento, spero di essere stato d'aiuto..

Ciao, Andy

alextyx Profilo | Expert

Concordo! E siccome val più un esempio di mille parole.....:

Private Sub FrmEditaPrimaNota_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
If GIN.PblFlagStartNascondi = True Then
'il comando di chiusura può venire solo da FrmStart, che nn può darlo
' se nn è visibile
e.Cancel = True
Me.FlagEscape = True
End If
End Sub

La riga e.Cancel = True è quella che compie il miracolo!
Ciao
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5