VB.NET - Passage d'un événement en tant que paramètre

J'ai besoin de passer un événement comme un paramètre à une fonction. Est-il un moyen de faire cela?

La raison est que j'ai une séquence de deux lignes de code qui est jonché partout dans mon programme, où je dynamiquement supprimer le gestionnaire à un événement, puis définissez le gestionnaire de nouveau. Je suis en train de faire ce pour plusieurs événements et les gestionnaires d'événements, j'ai donc décidé d'écrire une fonction qui fait cela.

Comme un exemple, disons que j'ai une zone de liste déroulante dans mon code appelé combobox1, et j'ai la fonction appelée indexChangedHandler. Dans 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 le dessus de deux lignes de code (ou similaires) tout au cours de mon programme, donc, je suis à la recherche d'un moyen de le faire:

Private Sub setHandler(evt As Event, hndler As eventhandler)
     RemoveHandler evt, hndler
     AddHandler evt, hndler
End Sub

de sorte que partout où ces deux lignes de code(ou similaire) dans mon programme, je peux juste remplacer par:

setHandler(combobox1.SelectedIndexChanged, AddressOf indexChangedHandler)

Jusqu'à présent, le "evt " Manifestation" de la partie de l'argument de la setHandler fonction est de donner une erreur.

P. S: j'ai posé cette question sur un couple d'autres forums et reçois demandé pourquoi je veux définir 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 provoque le gestionnaire doit être exécutée n fois lorsque l'événement se produit. Pour éviter ce, qui est, pour s'assurer que le gestionnaire n'est exécutée qu'une fois, lorsque l'événement se produit, j'ai d'abord supprimer le gestionnaire à chaque fois que je veux ajouter le gestionnaire de façon dynamique.

Vous demandez peut-être pourquoi le gestionnaire être ajoutées à plusieurs reprises, en premier lieu... La raison est parce que j'ai ajouter le gestionnaire qu'après un événement particulier, dire E1, dans mon formulaire a eu lieu (j'ai ajouter le gestionnaire dans le gestionnaire d'événement E1). Et l'événement E1 peut se produire plusieurs fois dans mon formulaire. Si je ne retirez pas le gestionnaire à chaque fois avant de l'ajouter de nouveau, le gestionnaire est ajouté et donc exécutée plusieurs fois.

Quel que soit le cas, le traitement se produisant au sein de la fonction n'est pas d'une extrême importance pour moi en ce moment, mais plutôt simplement le moyen de faire passer un événement en tant que paramètre.

Pouvez-vous laissez-nous savoir quelle est l'erreur?
Il n'y a pas de véritable moyen de le faire par programmation, puisque vous ne pouvez pas passer des références à un événement membres de. Je ne suis pas exactement sûr de ce que setHandler est censé faire... pouvez-vous préciser pourquoi vous avez besoin de supprimer un gestionnaire d'événements, puis ajoutez-le droit de retour?
J'étais en train d'éditer mon post pour expliquer pourquoi j'en aurais besoin pour ce faire, s'est interrompu, est revenu et a terminé le montage et soumis, avant de réaliser que vous avez posé la question déjà. Longue histoire courte, la raison en est maintenant inclus dans le message original 🙂
Je vois. Malheureusement, il n'y a vraiment aucun moyen de faire ce que vous demandez ici...

OriginalL'auteur Tracer | 2010-11-10