Porblemes d'évenements

LTourist Messages postés 24 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 8 février 2009 - 28 juin 2006 à 18:52
LTourist Messages postés 24 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 8 février 2009 - 29 juin 2006 à 23:13
Salut,

J'ai créer une classe comportant des évenements. Pour ceux qui connaissent, pour le déclencher, en fait dans cette classe une Sub qui contient "RaiseEvent MyEvent". Voila mon probleme :
Si l'appel de cette sub et une delegate de l'evenement en question ne sont pas dans la meme classe, l'événement ne se déclanche pas!
Exemple :
...
MyClass.MyEventSub
...

Public sub MyClass_MyEventSub Handles Class1.MyEvent
...
End Sub

=>L'évènement se declenche

Maintenant si MyClass.MyEventSub se trouve dans une autre class (les déclarations etant bien sûr faites), l'événements sur la class contenant la delegate ne se declenche pas...

D'ou vient le probleme? Ce n'est quand meme pas une limitation? Je trouverais ça totalement stupide...

Merci d'avance

PS : je sais pas si c'est le bon thème par contre...
LTourist

2 réponses

olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
29 juin 2006 à 11:35
salut,
tu peux donner un exemple plus concret stp...

"Public sub MyClass_MyEventSub Handles Class1.MyEvent" est il déclaré dans Class1 ?
Si oui c'est normal que ca ne marche pas ailleurs.
Si tu veux faire référence à un evenement, il faut que tu handle l'objet et pas la classe:

________________________________________________________
Public Class1

   public event monevent()

   Public sub MyClass_MyEventSub Handles Class1.MyEvent
         ............
   end sub
end class
_________________________________________________________

public class2
      public withevents Obj1 as new Class1

     Public sub MyClass_MyEventSub Handles Obj1 .monevent
         ............
   end sub

   
end class
___________________________________________________________

Rollerman
0
LTourist Messages postés 24 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 8 février 2009
29 juin 2006 à 23:13
Public Class1

    Delegate Sub MyEventHandler(ByVal sender As Object, ByVal e As MyEventArgs)
    Public Event MyEvent()

    Public Sub RaiseMyEvent(Nothing, New ComponentNotificationArgs())
       RaiseEvent MyEvent
    End Sub

End Class

<hr size="2" width="100%" />
Public Class2

    Public Withevents Obj1 as new Class1

    Public Sub DeclencherMyEvent()
       Obj1.RaiseMyEvent
    End Sub

    Public sub Obj1_MyEvent Handles Obj1.MyEvent
        .....
    End Sub

End Class
<hr size="2" width="100%" />Dans ce cas l'événements se déclenche :)
Mais si j'appelle RaiseMyEvent depuis une autre classe, alors l'evenement dans la class2 ne se déclenche pas... La solution que j'ai trouvé est de déclarer l'événement en Shared dans la class1, mais je trouve ça un peu étrange, n'y a t'il pas un autre moyen de procéder??

Merci de ta réponse

LTourist
0
Rejoignez-nous