LTourist
Messages postés24Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention 8 février 2009
-
28 juin 2006 à 18:52
LTourist
Messages postés24Date d'inscriptionjeudi 22 décembre 2005StatutMembreDerniè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
olixelle
Messages postés506Date d'inscriptionvendredi 30 juillet 2004StatutMembreDernière intervention 3 mars 20082 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
___________________________________________________________
LTourist
Messages postés24Date d'inscriptionjeudi 22 décembre 2005StatutMembreDerniè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??