me référence l'instance dans laquelle s'execute le code actuelle
mybase référence le niveau d'en dessous au niveau héritage
s'il n'y a pas de redéfinition des membres, me et mybase pointent sur le meme membre ...
pour les évènements microsoft a voulu qu'ils aient tous la meme définition, à savoir sender as object et e as system.Eventargs
sender comme l'explique pvialatte contient l'instance qui déclenche l'évènement
vu qu'il est possible de gérer un evenement de plusieurs instances sur la meme sub, ca permet de savoir lequel appelle l'event
exemple :
1 2 3 4 5 6 7 8 9 10 11
| private _b1 as button
private _b2 as button
private _b3 as button
private sub btn_click(sender as object, e as system.eventargs) handles _b1.click, _b2.click, _b3.click
if sender is _b1 then
dim b as button = directcast(sender,button)
'ici b est le meme objet que _b1
'directcast permet de gérer l'intellisense
end if
end sub |
il est aussi possible d'ajouter de l'évènementiel par code avec addhandler
il est aussi possible de tester le type de sender avant de faire le directcast
if typeof sender is button then
si tu as des boutons qui sont instanciés à la volée, tu n'as pas forcément gardé de référence dessus, donc tu peux tester le nom
1 2 3 4 5
|
dim b as button = directcast(sender,button)
select case b.name
'
end select |
e contient les paramètres de l'évènements
avant (sur vb6) il n'y avait pas de sender je crois, et les paramètres étant différents d'un event à l'autre
exemple ancien : event (param1 as string, param2 as integer)
maintenant les paramètres sont ajoutés dans une classe spéciale, dérivée de system.EventArgs
la classe de base system.EventArgs sert donc à dire qu'il n'y a aucun paramètre (je sais ca parrait con mais bon ^^)
la classe system.windows.forms.mouseeventargs dérive donc de eventargs et expose des paramètres en plus (le bouton, x, y etc...)
bref ca harmonise et ca range ...
Partager