Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Chiusura 'forzata' di un form
Forum - C# / VB.NET - Chiusura 'forzata' di un form

Avatar
Tonino70 (Normal User)
Rookie


Messaggi: 21
Iscritto: 29/08/2008

Segnala al moderatore
Postato alle 19:43
Martedì, 29/03/2011
ciao a tutti,

ho il seguente problema:

una form con un bottone 'chiudi' ed il seguente codice
Codice sorgente - presumibilmente VB.NET

  1. Private Sub btnChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChiudi.Click
  2.         Me.Close()
  3.     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


chi non ha peccato non ha vissuto...
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 20:06
Martedì, 29/03/2011
Application.Exit


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
Tonino70 (Normal User)
Rookie


Messaggi: 21
Iscritto: 29/08/2008

Segnala al moderatore
Postato alle 13:57
Mercoledì, 30/03/2011
ciao,
forse ho omesso di dire che il form viene avviato da un'altro form,

Codice sorgente - presumibilmente Plain Text

  1. 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,


chi non ha peccato non ha vissuto...
PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 695
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 14:19
Mercoledì, 30/03/2011
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

  1. Private Sub btnChiudi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChiudi.Click
  2.         bCanClose = True
  3.         Me.Close()
  4.     End Sub



Ciao. :k:

Luigi


Le cose si fanno per bene o non si fanno affatto
PM Quote
Avatar
Tonino70 (Normal User)
Rookie


Messaggi: 21
Iscritto: 29/08/2008

Segnala al moderatore
Postato alle 18:01
Mercoledì, 30/03/2011
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.


chi non ha peccato non ha vissuto...
PM Quote
Avatar
Phil93 (Normal User)
Pro


Messaggi: 85
Iscritto: 26/01/2011

Segnala al moderatore
Postato alle 19:06
Venerdì, 01/04/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.

PM Quote
Avatar
Tonino70 (Normal User)
Rookie


Messaggi: 21
Iscritto: 29/08/2008

Segnala al moderatore
Postato alle 10:10
Giovedì, 07/04/2011
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.


chi non ha peccato non ha vissuto...
PM Quote
Avatar
Phil93 (Normal User)
Pro


Messaggi: 85
Iscritto: 26/01/2011

Segnala al moderatore
Postato alle 23:26
Giovedì, 07/04/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. :k:

PM Quote