Je dois passer un événement en tant que paramètre à une fonction. Y-a-t'il une façon de le faire?VB.NET - Passer un événement en tant que paramètre
La raison en est que j'ai une séquence de deux lignes de code qui est jonchée partout dans mon programme, où je supprime dynamiquement le gestionnaire à un événement, puis définissez à nouveau le gestionnaire. Je le fais pour plusieurs événements différents et des gestionnaires d'événements, j'ai donc décidé d'écrire une fonction qui le fait. Par exemple, disons que j'ai un combobox dans mon code appelé combobox1, et j'ai le gestionnaire appelé indexChangedHandler. En plusieurs endroits de mon code, j'ai les deux lignes suivantes:
RemoveHandler combobox1.SelectedIndexChanged, AddressOf indexChangedHandler
AddHandler combobox1.SelectedIndexChanged, AddressOf indexChangedHandler
Maintenant, je ne veux pas continuer à répéter les deux lignes de code ci-dessus (ou similaire) sur mon programme, alors je m à la recherche d'une façon de le faire:
Private Sub setHandler(evt As Event, hndler As eventhandler)
RemoveHandler evt, hndler
AddHandler evt, hndler
End Sub
afin que partout où ces deux lignes de code (ou similaire) se produisent dans mon programme, je peux les remplacer par:
setHandler(combobox1.SelectedIndexChanged, AddressOf indexChangedHandler)
jusqu'à présent , la partie "evt as Event" de la Le rgument de la fonction setHandler donne une erreur. P.S: J'ai posé cette question sur un ou deux autres forums et je continue de me demander pourquoi je voudrais régler le gestionnaire immédiatement après l'avoir retiré. La raison en est que l'ajout dynamique d'un gestionnaire d'événements n fois fait que le gestionnaire est exécuté n fois lorsque l'événement se produit. Pour éviter cela, c'est-à-dire, pour s'assurer que le gestionnaire est exécuté une seule fois lorsque l'événement se produit, je supprime d'abord le gestionnaire chaque fois que je souhaite ajouter dynamiquement le gestionnaire. Vous pourriez demander pourquoi le gestionnaire serait ajouté plusieurs fois en premier lieu ... La raison en est que j'ajoute le gestionnaire seulement après qu'un événement particulier, disons E1, soit survenu sous ma forme (j'ajoute le gestionnaire dans le gestionnaire de l'événement E1). Et l'événement E1 peut se produire plusieurs fois dans mon formulaire. Si je ne supprime pas le gestionnaire à chaque fois avant de l'ajouter à nouveau, le gestionnaire est ajouté et donc exécuté plusieurs fois. Quoi qu'il en soit, le traitement qui se produit au sein de la fonction n'est pour le moment pas très important pour moi, mais plutôt le moyen de passer un événement en paramètre.
Pouvez-vous nous indiquer l'erreur? –
Il n'y a pas de véritable moyen de le faire par programmation, car vous ne pouvez pas transmettre de références à un membre d'événement. Je ne sais pas exactement ce que setHandler est supposé faire ... pouvez-vous clarifier pourquoi vous devez supprimer un gestionnaire d'événements et l'ajouter à nouveau? – cdhowie
@cdhowie J'étais en train d'éditer mon post pour expliquer pourquoi j'aurais besoin de faire cela, je me suis interrompu, je suis revenu et j'ai terminé le montage et soumis, avant de réaliser que vous avez déjà posé la question. Longue histoire courte, la raison est maintenant incluse dans l'article original :) – Tracer