Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.visual-basic > #19099

Re: Scavalcare un evento vb.net

Newsgroups it.comp.lang.visual-basic
Date 2017-07-19 05:48 -0700
References <db498eb0-dcf9-436d-9fdd-c03321b96db6@googlegroups.com> <c2f4a8aa-7e29-4602-abc4-4b1ddf1dfd06@googlegroups.com>
Message-ID <af85e844-223d-4513-ba3b-725c4febbe32@googlegroups.com> (permalink)
Subject Re: Scavalcare un evento vb.net
From Marco75 <marcoporzi75@gmail.com>

Show all headers | View raw


Il giorno mercoledì 19 luglio 2017 14:29:21 UTC+2, Luca D ha scritto:
> 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

Ottimo, era ciò che mi serviva!!!
grazie 1000
Marco

Back to it.comp.lang.visual-basic | Previous | NextPrevious in thread | Find similar


Thread

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