una classe definisce un evento e lo lancia.
la classe client definisce la funzione di evento
funzione_evento(sender, e)...
la domanda è questa: la funzione evento nel client, può notificare una risposta alla classe chiamante?
![]()
una classe definisce un evento e lo lancia.
la classe client definisce la funzione di evento
funzione_evento(sender, e)...
la domanda è questa: la funzione evento nel client, può notificare una risposta alla classe chiamante?
![]()
Pietro
vediamo se ho capito.
da client:codice:Public class chiamata Public event evento Public Sub Routine RaiseEvent evento() End Sub End Class
?codice:Private Sub oggChiamata_evento(sender, e) ' ' ' End Sub
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/
se e' cosi'....
settare una variabile pubblica int della classe a 1 ?
chiamare un metodo pubblico della classe, es. evento_utilizzato_dallesterno ?
o sto dicendo cavolate post-ferie ?
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/
CiaoOriginariamente inviato da djciko
vediamo se ho capito.
***
?La questione è che... non avevo capito io la potenzialità degli eventi
![]()
credevo che certe cose si potessero fare solo con i delegati, poi, documentandomi meglio, ho scoperto che anche con gli eventi si può restituire qualcosa al metodo che lancia l'evento.
Dato l'evento xxxx(sender, e), tutto sta nell'aggiungere ad e una proprietà che il metodo chiamante può gestire.
Detto in altri termini, il framework, anche se è microsoft, più lo studio, e più mi piace![]()
![]()
Pietro
un po' di codice per evitare il giro anche a noi ?![]()
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/
l'esempio è naturalmente banale, ma il succo c'è
codice:Option Strict On Partial Class prove_a Inherits System.Web.UI.Page Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 'creo istanza di MiaClasse Dim j As New MiaClasse() 'invoco il metodo Enumera che mi stampa 10 valori da 10 a 100 j.Enumera() End Sub End Class 'classe personale di evento Public Class MioEventoEventArgs Inherits EventArgs Private _Continuo As Boolean Public Property Continuo() As Boolean Get Return Me._Continuo End Get Set(ByVal value As Boolean) Me._Continuo = value End Set End Property Private _Numero As Integer Public Property Numero() As Integer Get Return Me._Numero End Get Set(ByVal value As Integer) Me._Numero = value End Set End Property End Class 'delegate che definisce l'evento Public Delegate Sub MioEvento(ByVal sender As Object, ByVal e As MioEventoEventArgs) 'classe che lancia l'evento Public Class MiaClasse Public Event MioEvento As MioEvento Public Sub Enumera() For i As Integer = 1 To 10 Dim e As New MioEventoEventArgs() e.Numero = i * 10 RaiseEvent MioEvento(Me, e) If Not e.Continuo Then Exit For Next End Sub Protected Sub Page_MioEvento(ByVal sender As Object, ByVal e As MioEventoEventArgs) Handles Me.MioEvento 'Page_MioEvento ha due parametri 'sender = istanza che lancia evento 'e = oggetto di tipo MioEventoEventArgs 'e.Numero è qualcosa restituito dal chiamante 'e.Continuo, vero o falso dice al chiamante se continuare o meno 'se e.numero > 50, esco If e.Numero <= 50 Then PrintLn(e.Numero, e.Numero.ToString) e.Continuo = True End If End Sub End Class
Pietro
visto che sto studiando, chiedo anch'io una cosa:
la proprietà e.Numero è a lettura - scrittura
Puoi aiutarmi a renderla a solo lettura? :master:
![]()
Pietro
?codice:Public Readonly Property Numero() As Integer Get Return Me._Numero End Get Set(ByVal value As Integer) Me._Numero = value End Set End Property
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/
Originariamente inviato da djciko
?codice:Public Readonly Property Numero() As Integer Get Return Me._Numero End Get Set(ByVal value As Integer) Me._Numero = value End Set End Property
![]()
deve essere a SOLO LETTURA PER L'ESTERNO. questo deve essere possibile
For i As Integer = 1 To 10
Dim e As New MioEventoEventArgs()
e.Numero = i * 10
RaiseEvent MioEvento(Me, e)
If Not e.Continuo Then Exit For
Next
Pietro
non so aiutarti, ti seguo a fatica su quest'argomento...
press play on tape
-----
MP3 Listing
https://sourceforge.net/projects/mp3-listing
File Listing
https://sourceforge.net/projects/file-listing-2-0/