Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.lang.visual-basic > #19098
| X-Received | by 10.36.29.81 with SMTP id 78mr1018147itj.5.1500467359656; Wed, 19 Jul 2017 05:29:19 -0700 (PDT) |
|---|---|
| X-Received | by 10.31.148.67 with SMTP id w64mr5496vkd.3.1500467359590; Wed, 19 Jul 2017 05:29:19 -0700 (PDT) |
| Path | csiph.com!weretis.net!feeder6.news.weretis.net!news.glorb.com!t6no532800itb.0!news-out.google.com!i9ni10546qti.0!nntp.google.com!14no391840qtn.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail |
| Newsgroups | it.comp.lang.visual-basic |
| Date | Wed, 19 Jul 2017 05:29:19 -0700 (PDT) |
| In-Reply-To | <db498eb0-dcf9-436d-9fdd-c03321b96db6@googlegroups.com> |
| Complaints-To | groups-abuse@google.com |
| Injection-Info | glegroupsg2000goo.googlegroups.com; posting-host=81.88.228.153; posting-account=eitZdgoAAAC6C9CXmyhLNaQM3MgI3eZM |
| NNTP-Posting-Host | 81.88.228.153 |
| References | <db498eb0-dcf9-436d-9fdd-c03321b96db6@googlegroups.com> |
| User-Agent | G2/1.0 |
| MIME-Version | 1.0 |
| Message-ID | <c2f4a8aa-7e29-4602-abc4-4b1ddf1dfd06@googlegroups.com> (permalink) |
| Subject | Re: Scavalcare un evento vb.net |
| From | Luca D <antaniserse@yahoo.it> |
| Injection-Date | Wed, 19 Jul 2017 12:29:19 +0000 |
| Content-Type | text/plain; charset="UTF-8" |
| Content-Transfer-Encoding | quoted-printable |
| Xref | csiph.com it.comp.lang.visual-basic:19098 |
Show key headers only | View raw
Per interrompere l'innesco di un evento devi sganciarlo dalla/e funzione/i che fino ad ora lo hanno consumato.
Quando chiamo RemoveHandler, devi passare quindi l'indirizzo del delegato giusto; nel tuo codice stai passando 'btnAggiorna_Click' che non centra nulla, non è il delegato di quell'evento... la funzione che ti interessa è 'Home_FormClosing'
Quindi, o rendi qulla sub pubblica, in modo che tu possa referenziarla nel codice della seconda maschera, oppure (più pulito) crei nella prima maschera un metodo pubblico 'SpegniWarning' o come ti pare, dove inserisce i remove handler del caso
Esempio
'Maschera1
Public Sub SpegniWarning()
RemoveHandler Me.FormClosing, AddressOf Home_FormClosing
End Sub
'Maschera2
Private Sub btnAggiorna_Click (...) Handles btnAggiorna.Click
Home.SpegniWarning
Application.Close()
End Sub
Nota che tutta questa cosa può diventare superflua se sfrutti il parametro 'e' di FormClosing, che trovi descritto su
https://msdn.microsoft.com/it-it/library/system.windows.forms.formclosingeventargs(v=vs.110).aspx
Private Sub Home_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
If e.CloseReason = CloseReason.UserClosing Then
If (MessageBox.Show("Sto per chiudere l'applicazione!" & vbNewLine & vbNewLine _
& "Confermi?", " CHIUSURA APPLICAZIONE", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = Windows.Forms.DialogResult.No) Then
e.Cancel = True
MessageBox.Show("Chiusura applicazione interrotta...", "CHIUSURA APPLICAZIONE", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
End If
End If
End Sub
La IF che vedi all'inizio fa si che il messaggio venga mostrato se l'utente prova a chiudere manualmente con il classico tasto X, ma non se invece la chiusura è pilotata via codice in qualche altro modo, come ad esempio la tua seconda maschera
Back to it.comp.lang.visual-basic | Previous | Next — Previous in thread | Next in thread | Find similar
Scavalcare un evento vb.net Marco75 <marcoporzi75@gmail.com> - 2017-07-19 01:55 -0700
Re: Scavalcare un evento vb.net Luca D <antaniserse@yahoo.it> - 2017-07-19 05:29 -0700
Re: Scavalcare un evento vb.net Marco75 <marcoporzi75@gmail.com> - 2017-07-19 05:48 -0700
csiph-web