Gestire AcceptButton

sabato 20 dicembre 2008 - 13.45

edward_radical Profilo | Newbie

All'interno di un form, con definizione di AcceptButton e CancelButton, ho la necessità di non chiudere il form alla sua accettazione al verificarsi di una determinata condizione.
Al momento ho effettuato l'exit sub, ma il form viene chiuso.
Esiste un modo per evitare la chiusura del form e restituire il controllo al form, c'è qualcosa del genere in fase di chiusura dell'applicazione con "e.cancel"; esiste qualcosa di analogo per l'AcceptButton?

A disposizione.

Jeremy Profilo | Guru

e.cancel=true ("e" sono gli EventArgs)
Fammi sapere.

edward_radical Profilo | Newbie

No purtroppo non va, avevo provato anche io questa soluzione, ma la proprietà non c'è!
Al momento ho utilizzato un workaround inventato da me!

Appena si verifica la condizione di blocco della chiusura del form imposto una variabile che indica che il form NON deve essere chiuso.
Nell'evento FormClosing (considerato che da qui DEVE passare per forza ) se la variabile è impostata sfrutto l'e.cancel per evitare la chiusura del form e reimposto la variabile a zero.

Il modo forse non è molto elegante, ma funziona!

Jeremy Profilo | Guru

Scusa ma c'è qualcosa che non torna.....
Prima dici che la Proprietà Cancel non c'è!!!!
Poi dici che la usi!!!!!!
Puoi spiegarti meglio???
Workaround per evitare la chiusura del Form....NON CE NE SONO.
Una volta scatenato l'evento FormClosing...non c'è workaround che tenga....il form si chiude e basta.(a parte la proprietà Cancel = true)!!!!

edward_radical Profilo | Newbie

Ok, mi spiego meglio.
Il problema è che la pressione dell'ok è anche intercettata dal form come AcceptButton, quindi alla pressione del tasto viene anche avviata l'operazione di chiusura del form, quindi dal bottone NON c'è modo di interrompere l'operazione di chiusura.
Ora, io utilizzo l'e.cancel, non del bottone (considerato che non esiste!), ma del FormClosing.
Quindi:
- premo il bottone con AcceptButton e dopo le operazioni del bottone viene avviata l'operazione di chiusura del form
- sull'azione del bottone se si verifica la mia condizione imposto una variabile uncloseFrm=True, che indica che il form NON deve essere chiuso
- viene avviato in automatico il FormClosing...
- in FormClosing se la mia variabile è impostata (uncloseFrm=True) imposto l'e.cancel=True e do il focus al controllo che mi interessa, in questo modo il form non si chiude!

In conclusione ho sfruttato l'e.cancel del form e non ho interrotto la catena di eventi dell'AcceptButton ovvero pressione bottone/chiusura form...

Jeremy Profilo | Guru

Ok...effettivamente avevo interpretato male....
Grazie della precisazione.
Ciao.

edward_radical Profilo | Newbie

Ma figurati nessun problema
In effetti non mi ero spiegato benissimo, comunque anche se, ripeto, non mi fa impazzire il modo, ho risolto il problema.

Grazie e a presto.
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