Bonjour à tous !
Je cherche comment ajouter des evénements à un descendant de la classe Component.
Pour bien expliquer les choses : je suis en train de créer un contrôle perso, mais je n'ai pas besoin de tous ce qui est déclaré dans la classe Control, loin de là. Du coup, j'aimerais plutôt faire descendre mes contrôle de la classe Component, mais à ce moment, je n'ai même pas d'événement Paint. Ajouter des propriétés est très simple, ajouter des événements perso également, mais ajouter une gestion de certains événements systèmes, c'est autre chose !
En gros, il faudrait que ma classe, descendante de Component, puisse gérer les événements suivants :Je ne vois absolument pas comment faire... J'ai utilisé Reflector pour regarder le code de la classe Control (qui fait 15 000 lignes
- Paint
- MouseClick
- MouseEnter
- MouseLeave
) afin de voir comment ces événements étaient gérés, mais c'est pas très probant. En gros, pour l'événement Paint, on peut faire ressortir ce code (en C#) :
Ça m'aide, mais sans plus... La variable EventPaint, qui à l'air à l'origine de tout, n'est qu'un objet vide... Je ne comprends pas...
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 private static readonly object EventPaint = new object(); public event PaintEventHandler Paint { add { base.Events.AddHandler(EventPaint, value); } remove { base.Events.RemoveHandler(EventPaint, value); } } [EditorBrowsable(EditorBrowsableState.Advanced)] protected virtual void OnPaint(PaintEventArgs e) { PaintEventHandler handler = (PaintEventHandler) base.Events[EventPaint]; if (handler != null) { handler(this, e); } } [EditorBrowsable(EditorBrowsableState.Advanced)] protected void RaisePaintEvent(object key, PaintEventArgs e) { PaintEventHandler handler = (PaintEventHandler) base.Events[EventPaint]; if (handler != null) { handler(this, e); } }
Je cherche une solution en C# ou en VB.Net, je n'ai pas de contrainte de langage (même si je suis plus habitué au VB !)
Merci d'avance à tous ceux qui auraient une piste !
Partager