Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

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

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,

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
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

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.

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.

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