Comment traiter les événements .NET
Pour traiter les événements .Net, il faut :
1. Trouver l'événement.
L'événement est un membre d'une classe .NET. Ce membre a un nom et un type. Le type définit le type du handler qui pourra être associé à l'événement. Le nom permet de trouver deux méthodes :
- "add_<Nom de l'événement>"
- "remove_<Nom de l'événement>"
Ces deux méthodes permettent d'associer et de dissocier un ou plusieurs handlers à un événement. Le type du paramètre de ces deux méthodes est le nom du type du handler.
Exemple : La classe PossèdeEvénement contient un événement MonEvenement de type EventHandler<MonArgumentEvénement>.
2. Récupérer un handler.
La récupération d'un handler est réalisée grâce à la fonction DotNetDélégué :
- Le premier paramètre est le nom de la procédure WLangage
- Le second paramètre est le nom de la classe du type du handler. Ce nom peut être récupéré par le nom du type des paramètres des méthodes "add_xxx" et "remove_xxx".
Exemple : La procédure WLangage est de la forme :
PROCÉDURE MonHandler(src, args)
Trace(args:Message)
src est un objet .NET de type PossèdeEvénement, args est un objet .NET de type MonArgumentEvénement
3. Associer le handler à l'événement
Pour associer le handler à l'événement, il suffit d'appeler sur l'objet possédant l'événement, la méthode "add_<Nom de l'événement>".
Exemple :
clPossède:add_MonEvénement(DotNetDélégué("MonHandler", "EventHandler<MonArgumentEvénement>"))
4. Déclencher l'événement
Dans notre exemple, l'appel à clPossède:Déclenche provoque l'événement.
Astuce
Dans la procédure WLangage, il est possible :
- soit d'utiliser directement les méthodes associées aux paramètres de la procédure. Cependant, la complétion n'est pas disponible.
- soit de définir un objet dynamique et de lui affecter le paramètre voulu. La complétion est alors disponible sur l'objet.
Ces deux méthodes sont utilisées dans l'exemple détaillé.