Bonjour,
Je m'explique :
J'ai un UserControl sur lequel sont dessiné des éléments (rectangles, textes, etc ...)
J'ai une classe Drawer qui dessine ces éléments et les liste.
Les events Mousexxx sont lancés par le UserControl mais j'aimerais avoir, pour chaque élément dessiné, un event Mousexxx sur lequel je pourrai abonner un gestionnaire d'event de mon UserControl.
La solution que j'ai trouvée est :
- L'élément dessiné possède les définitions d'un delegate et un event pour chaque Mousexxx
- Tous les éléments dessinés font partie d'une ou plusieurs listes
- Chacune de ces listes permet de définir l'élément dessiné sur lequel se trouve la souris
- Dans la surcharge du OnMousexxx du UserControl, je lance une fonction de la liste qui le répercute sur l'élément sélectionné (OnMousexxx de l'élément dessiné)
- Dans le OnMousexxx de l'élément dessiné, je lance l'event Mousexxx déclaré dans ce dernier.
- Ainsi je peux abonner un gestionnaire d'événement de mon UserControl à chaque event de mes éléments dessinés

Ça me semble un peu tiré par les cheveux de descendre l'event Mousexxx du UserControl via le Drawer, via la liste d'éléments dessinés sur l'élément selectionné puis de remonter cet event sur le UserControl via l'event de l'élément dessiné.
Mais je ne vois pas trop comment régler le problème autrement.

Ou alors, ne pas travailler avec des events au niveau de l'élément dessiné mais simplement de récupérer celui qui se trouve sous la souris et y appliquer le traitement voulu...

Je ne suis pas sûr d'avoir été très clair mais sait-on jamais. Quelqu'un à peut-être déjà été confronté à ce genre de problème...