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. P> 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 ... p> p>
3 Réponses :
Tout d'abord, les gestionnaires d'événements doivent avoir des sous-marins. Deuxièmement, 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. p> p> adresse de code> 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:
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é.
Votre deuxième argument dans la fonction doit être de type Vous avez besoin d'une méthode pour gérer ces clics : p> et vous pouvez consommer ces deux méthodes maintenant avec quelque chose comme: p> EventHandler Code> et votre fonction ressemblerait alors à:
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)
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)
adresse de code> renvoie un délégué. Votre fonction devrait donc accepter le délégué donné comme type de paramètre.