Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    un evento può restituire risposte al 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

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    vediamo se ho capito.

    codice:
    Public class chiamata
     Public event evento 
    
     Public Sub Routine
       RaiseEvent evento()
     End Sub
    End Class
    da client:

    codice:
    Private Sub oggChiamata_evento(sender, e)
    '
    '
    '
    End Sub
    ?

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    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 ?

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da djciko
    vediamo se ho capito.
    ***
    ?
    Ciao 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

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    un po' di codice per evitare il giro anche a noi ?

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    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

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    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

  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    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
    ?

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    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

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    non so aiutarti, ti seguo a fatica su quest'argomento...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.