9
votes

Passage de l'adresse de la fonction de vb.net à utiliser addhandler

Je dois transmettre une référence d'une fonction à une autre fonction dans VB.NET. Comment cela peut-il être fait?

Ma fonction doit utiliser Addhandler en interne, pour laquelle je dois transmettre une fonction de manutention. Mon code ci-dessous ne fonctionne évidemment pas, mais cela transmet l'idée de ce dont j'ai besoin. xxx

existe une autre façon de faire cela? Addhandler doit être réglé sur un paramètre transmis dans une fonction d'une manière ou d'une autre ...


1 commentaires

adresse de renvoie un délégué. Votre fonction devrait donc accepter le délégué donné comme type de paramètre.


3 Réponses :


1
votes

Tout d'abord, les gestionnaires d'événements doivent avoir des sous-marins. Deuxièmement, adresse de ne peut pas être utilisé comme type. Si le sous-nom est dans la même classe, utilisez simplement le sous-nom. Si c'est dans une autre classe / fichier, vous devrez peut-être apporter le sous-public et / ou le qualifier comme membre de l'autre classe. Les sous-marins de la clause de Addhandler doivent suivre essentiellement le motif: xxx

Si vous avez besoin de routines différentes en fonction du nom de l'élément de menu, vous pouvez utiliser un gestionnaire et appeler la routine appropriée en fonction du nom du nom. de l'article déclenchant l'événement.


1 commentaires

Droite, je sais que l'adresse du type ne peut pas être un type de données. C'était juste pour transmettre l'idée. Et je sais utiliser addhandler. Mais si, disons que la fonction de gestionnaire est dans une autre classe et que Createmenuitem est public, comment puis-je passer l'adresse de la fonction de gestionnaire de cette classe à Createmenuitem? Chaque élément de menu créé doit avoir un gestionnaire différent. Je veux éviter d'avoir une énorme liste de commutateurs ou si..ele énoncé.



9
votes

Votre deuxième argument dans la fonction doit être de type EventHandler et votre fonction ressemblerait alors à: xxx

Vous avez besoin d'une méthode pour gérer ces clics : xxx

et vous pouvez consommer ces deux méthodes maintenant avec quelque chose comme: xxx


0 commentaires

13
votes

Un délégué de la fonction est exactement ce que vous devez faire cela. D'abord, vous devez définir le délégué quelque part dans la classe. Changez la signature pour adapter votre événement bien sûr.

CreateMenuItem(myString, AddressOf MyEventHandler)


1 commentaires

Si l'instruction Addhandler donne une erreur, essayez de définir le paramètre 'del' comme EventHandler au lieu de myDelegate à Createmenuitem. (Réf. @janez Lukan Solution)