Tonino70 (Normal User)
Rookie
Messaggi: 21
Iscritto: 29/08/2008
|
ciao a tutti,
ho il seguente problema:
una form con un bottone 'chiudi' ed il seguente codice
Codice sorgente - presumibilmente VB.NET |
Private Sub btnChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChiudi.Click Me.Close() End Sub
|
ma diciamo che ogni tanto non mi 'ascolta', ovvero mettiamo che sono entrato in una textbox, dove per uscirne devo inserire un valore x, ma se voglio mollare pigiando sul 'chiudi' mi dovrebbe chiudere comunque, senza tanti fronzoli.
sperando che mi sono spiegato bene, vi ringrazio dell'aiuto.
Antonino Dimarco
|
|
HeDo (Founder Member)
Guru^2
Messaggi: 2765
Iscritto: 21/09/2007
|
Application.Exit
|
|
Tonino70 (Normal User)
Rookie
Messaggi: 21
Iscritto: 29/08/2008
|
ciao,
forse ho omesso di dire che il form viene avviato da un'altro form,
Codice sorgente - presumibilmente Plain Text |
My.Forms.frm_gestione_xxx.Show()
|
e che io voglio chiudere quest'ultimo e non tutta la procedura,
poi ho cmq provato, e non sente neanche quello.
grazie,
|
|
gigisoft (Member)
Guru
Messaggi: 696
Iscritto: 11/10/2008
|
Prova a fare cosi':
1) dichiara una variabile booleana privata bCanClose;
2) fai in modo che essa venga modificata nell'evento OnChange della tua textbox, decretando quindi quando la finestra può essere chiusa;
3) Nell'evento per la chiusura della finestra fai in modo che essa possa essere chiusa solo se bCanClose assume valore vero;
4) Modifica cosi' il codice che hai postato:
Codice sorgente - presumibilmente VB.NET |
Private Sub btnChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChiudi.Click bCanClose = True Me.Close() End Sub
|
Ciao.
Luigi
|
|
Tonino70 (Normal User)
Rookie
Messaggi: 21
Iscritto: 29/08/2008
|
vs 2010
grazie delle risposte, ma la variabile che dici tu, con un IF, non penso che mi possa aiutare, io il form lo voglio chiudere senza condizioni, ma voglio chiudere solo il form e non tutta la procedura.
andando in modalità debug, quando mi si manifesta il problema, l'evento btn_chiudi.click non si avvera, è come se la procedura fosse sospesa in non so quale altro evento.
ricordo che sta cosa (la NON chiusura del form) avviene solo nel 15% dei casi in cui pigio sul btn_chiudi, per la restante parte la form si chiude normalmente.
quindi invece di star a capire quale era il problema cercavo una scorciatoia, chiudendo il form in modo 'forzato'.
o se mi indicate un metodo per capire su quale evento stà bloccato.
grazie.
|
|
Phil93 (Normal User)
Pro
Messaggi: 85
Iscritto: 26/01/2011
|
Anche a me una volta è successo che un form non si chiudesse premendo sulla X. Nel mio caso il problema era un'eccezione non gestita nell'handler dell'evento FormClosing. Prova a vedere dalla finestra di controllo immediato se alla chiusura del form vengono generate eccezioni.
|
|
Tonino70 (Normal User)
Rookie
Messaggi: 21
Iscritto: 29/08/2008
|
ciao,
mi sembra un buon consiglio, in effetti quando gestisco i dati sulla form in alcuni casi mi appare un'eccezione, ma riesco a proseguire...
e come dovrei mettere in pratica il tuo consiglio ?
ovvero, da dove controllo se la form ha generato delle eccezioni e quali sono ?
grazie.
Tonino.
|
|
Phil93 (Normal User)
Pro
Messaggi: 85
Iscritto: 26/01/2011
|
Puoi usare la finestra di "Controllo immediato", uno strumento di debug di Visual Studio (menu Debug -> Finestre -> Controllo immediato).
Questa finestra, tra le altre cose, ti riporta tutte le eccezioni, gestite e non, generate dal programma. In questo modo puoi vedere se alla chiusura del form ne vengono generate e a quel punto concentrarti sulla rispettiva routine.
Per approfondire ulteriormente il debug, poi andare nella finestra Eccezioni (Debug -> Eccezioni) e spuntare su "Generata" e "Non gestita dall'utente" le eccezioni che ti ha segnalato la finestra di controllo immediato. Con questo metodo, le eccezioni spuntate verranno segnalate sempre e comunque dal debugger e saprai esattamente la parte di codice che le genera.
|
|