2010-12-08 5 views
0

Ok J'ai donc créé une liste d'objets d'une classe commeListe des objets et des événements partagés

For B As Integer = 0 To 5 
      clients.Add(New Client) 
      AddHandler clients(B).OnMessage, AddressOf clients_OnRec 
    Next 

Alors ceci est la déclaration d'événement

Public Event OnRec As EventHandler 

Ceci est mon événement

Private Sub clients_OnRec(ByVal sender As Object) 

'Does something 

End Sub 

Ma question est comment puis-je déterminer quelle instance de la classe dans la liste a déclenché l'événement. Je dois être capable de faire quelque chose comme:

clients(whateveronefiredit).ExecuteMethodInClass 

Comment puis-je faire cela?

Répondre

0

:) Je vais essayer d'expliquer ce qui se passe

maintenant dans la liste que vous avez 5 objets de type client et tout cela 5 d'entre eux appellent le gestionnaire d'événements clients_OnRec sur une sorte d'événement.

Lorsque le premier client déclenche cet événement, le sender dans la signature du gestionnaire d'événements Private Sub clients_OnRec(ByVal sender As Object) aura la référence d'objets client qui a déclenché l'événement.

donc, afin d'appeler la méthode ExecuteMethodInClass sur l'objet qui a déclenché l'événement, vous devez faire ceci:

Private Sub clients_OnRec(ByVal sender As Object) 
    Dim c As Client = CType(sender, Client) 'Cast the sender object as Client object 
    c.ExecuteMethodInClass() 'This executes the ExecuteMethodInClass on the Client object which raised this event 
End Sub 

espoir qui est clair.

Salutations

+0

Cela fonctionne. Merci!! –

Questions connexes