Créer des listeners

Résolu
kornetmuse Messages postés 38 Date d'inscription samedi 17 juillet 2004 Statut Membre Dernière intervention 19 octobre 2010 - 7 sept. 2009 à 18:18
kornetmuse Messages postés 38 Date d'inscription samedi 17 juillet 2004 Statut Membre Dernière intervention 19 octobre 2010 - 8 sept. 2009 à 09:49
Bonjour,

J'aurais aimé un exemple pour créer un listener sur le changement de valeur d'une variable. J'ai trouvé des exemples Java avec l'implémentation d'interfaces EventListener mais même avec visual studio je n'arrive pas à trouver l'équivalent.

Merci de votre aide

3 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 sept. 2009 à 09:16
aller j'ai tenté un petit exemple

dans une classe StringWithEvents
Public Class StringWithEvents

    'membre
    Private mValue As String

    'évènements
    Public Event BeforeChanged(ByRef Cancel As Boolean)
    Public Event Changed()
    Public Event ChangeCanceled()

    'propriété
    Public Property Value() As String
        Get
            Return mValue
        End Get
        Set(ByVal value As String)
            If Not (value =  mValue) Then 'ELSE pareil : donc pas de changement
                Dim bCancel As Boolean = False
                RaiseEvent BeforeChanged(bCancel)

                If bCancel Then
                    'a été annulé
                    RaiseEvent ChangeCanceled()
                Else
                    'on change
                    mValue = value
                    RaiseEvent Changed()
                End If
            End If
        End Set
    End Property



    'constructeurs
    Public Sub New()
        mValue = String.Empty
    End Sub
    Public Sub New(ByVal sValue As String)
        mValue = sValue
    End Sub
End Class



exemple d'utilisation, Form2 , 2 boutons

Public Class Form2
    Private WithEvents VarString As StringWithEvents

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        VarString  = New StringWithEvents("default")
    End Sub


    Private Sub VarString_BeforeChanged(ByRef Cancel As Boolean) Handles VarString.BeforeChanged
        Cancel (MessageBox.Show("VarString_BeforeChanged, accepter la modif?", "Changement value, actuelle " & VarString.Value, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.No)
    End Sub
    Private Sub VarString_ChangeCanceled() Handles VarString.ChangeCanceled
        MessageBox.Show("VarString_ChangeCanceled")
    End Sub
    Private Sub VarString_Changed() Handles VarString.Changed
        MessageBox.Show("VarString_Changed")
    End Sub



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        VarString.Value = System.DateTime.Now.ToString
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        MessageBox.Show("valeur actuelle = " & VarString.Value)
    End Sub
End Class


++
[hr]
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 sept. 2009 à 08:57
salut,

utilise simplement une classe ?

sur le let/set, tu relèves un évènement changed
++
[hr]
0
kornetmuse Messages postés 38 Date d'inscription samedi 17 juillet 2004 Statut Membre Dernière intervention 19 octobre 2010
8 sept. 2009 à 09:49
mouais t'aurais put faire un petit effort quand même :D

non je plaisante juste parfaite cette réponse ! il y a toute la base pour créer des events :) à moi après de tourner autour pour faire ce que je veux :p

et ca sera nettement plus joli que de passer ma vue en argument à mon modèle :o

thx dude !
0
Rejoignez-nous