IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[VB.NET2.0] Ajouter un Event à une collection générique List(Of T)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Février 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 79
    Par défaut [VB.NET2.0] Ajouter un Event à une collection générique List(Of T)
    J'ai créé un classe Node qui a entre autre des coordonnées X,Y,Z avec un événement Modified(sender as Object, e as eventArgs) qui est activé lorsque des modifications sont apporté à X,Y ou Z

    J'ai crée une collection Nodes qui hérite de List(Of Node)

    Je voudrais ajouter un événement à ma collection Nodes de telle sorte que lorsqu'il y a une modification apporter à un des Node de la collection, l'événement "NodeModified" soit activé, avec comme paramètre le Node modifié

    Public Event NodeModified(Sender as Object, e as EventArgs)

    En fait, je voudrais que Nodes.NodeModified soit activé quand Node.Modified est lancé, mais je n'ai pas accès, à partir de ma collection Nodes aux événements des Node faisant partie de cette collection.

    Est-ce que c'est possible?
    Merci

  2. #2
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 182
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 182
    Par défaut
    Bonjour.

    Il faut lever un event sur le node et le gérer dans la liste de node pour le lever vers la class qui a instancier cette liste.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    Public Class Node
        Private intX As Integer = 0
        Private strName As String = ""
        Event Modified(ByVal sender As Node, ByVal oldValue As Integer, ByVal newValue As Integer)
        Public Sub New(ByVal IName As String)
            strName = IName
        End Sub
        ReadOnly Property Name() As String
            Get
                Return strName
            End Get
        End Property
        Public Property X() As Integer
            Get
                Return intX
            End Get
            Set(ByVal value As Integer)
                Dim intOldValue As Integer = intX
                intX = value
                RaiseEvent Modified(Me, intOldValue, intX)
            End Set
        End Property
    End Class
     
    Public Class LNode
        Inherits List(Of Node)
        Event Modified(ByVal sender As Node, ByVal oldValue As Integer, ByVal newValue As Integer)
        Public Overloads Sub Add(ByVal item As Node)
            AddHandler item.Modified, AddressOf RaiseModifiedEvent
            MyBase.Add(item)
        End Sub
        Private Sub RaiseModifiedEvent(ByVal sender As Node, ByVal oldValue As Integer, ByVal newValue As Integer)
            RaiseEvent Modified(sender, oldValue, newValue)
        End Sub
    End Class
     
    Public Class Go
        Shared Sub main()
            Dim lnLnode As New LNode
            lnLnode.Add(New Node("NodeA"))
            lnLnode.Add(New Node("NodeB"))
            lnLnode.Add(New Node("NodeC"))
            AddHandler lnLnode.Modified, AddressOf ListOfNodeModifier
     
            lnLnode.Item(1).X = 2
            lnLnode.Item(0).X = 3
            lnLnode.Item(1).X = 4
            lnLnode.Item(2).X = 5
     
        End Sub
     
        Shared Sub ListOfNodeModifier(ByVal sender As Node, ByVal oldValue As Integer, ByVal newValue As Integer)
            MsgBox("Un node modifié ! node : " & sender.Name & " Old : " & oldValue & " New : " & newValue)
        End Sub
     
    End Class
    Nota : Projet à démarrer sur la class GO

    Je pense que tout est dans le code.

    Cdt.

  3. #3
    Membre actif
    Inscrit en
    Février 2004
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 79
    Par défaut
    Merci! Je vais regarder ça!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Ajouter un event à une équation différentielle
    Par asimov95 dans le forum MATLAB
    Réponses: 0
    Dernier message: 05/04/2015, 12h13
  2. Ajout élément dans une collection générique
    Par Methode dans le forum Langage
    Réponses: 6
    Dernier message: 22/08/2011, 17h03
  3. Ajout d'éléments à une collection
    Par Lelio1407 dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 18/05/2011, 15h38
  4. Ajouter des propriétés à une collection
    Par Hadware dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/01/2009, 16h27
  5. [DOM] Ajouter un event à une class
    Par Nulenprogra dans le forum Général JavaScript
    Réponses: 23
    Dernier message: 30/04/2007, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo