En passant AddressOf à une fonction dans VB.NET pour utiliser AddHandler
J'ai besoin de passer une référence d'une fonction à une autre fonction VB.NET. Comment cela peut-il être fait?
Ma fonction doit utiliser AddHandler en interne, pour laquelle j'ai besoin de passer d'une fonction de gestion. Mon code ci-dessous n'est évidemment pas le travail, mais il donne une idée de ce dont j'ai besoin.
Public Function CreateMenuItem(ByVal Name As String, ByRef Func As AddressOf ) As MenuItem
Dim item As New MenuItem
item.Name = Name
'item. other options
AddHandler item.Click, AddressOf Func
Return item
End Function
Est-il une autre façon de le faire? Le AddHandler doit être réglé à une passées en paramètre dans une fonction en quelque sorte...
Addressof
retourne un délégué. Votre fonction doit donc accepter le délégué comme le type de paramètre.OriginalL'auteur DieSlower | 2013-05-24
Vous devez vous connecter pour publier un commentaire.
Une fonction de délégué est juste ce dont vous avez besoin pour ce faire. Vous devez d'abord définir le délégué quelque part dans la classe. Modifier la signature pour s'adapter à votre événement, bien sûr.
Votre fonction sera de prendre le délégué comme un argument.
Et voici comment vous appelez la fonction:
OriginalL'auteur Fuzhou Hu
Votre deuxième argument de la fonction doit être de type
EventHandler
, et votre fonction pourrait alors ressembler à ceci:Maintenant, vous avez besoin d'une méthode pour gérer les clics:
Et vous pouvez consommer ces deux méthodes avec quelque chose comme:
OriginalL'auteur Janez Lukan
Tout d'abord, les gestionnaires d'événements doivent avoir des sous-marins. Deuxièmement,
AddressOf
ne peut pas être utilisé comme un type.Si le sub est dans la même classe, il suffit d'utiliser le sub nom. Si il est dans une autre classe/fichier, vous pourriez avoir à faire le sous publique et/ou de la qualifier comme étant un membre de l'autre classe. Subs pour la AddHandler clause doit fondamentalement suivre le modèle:
Si vous avez besoin de différentes routines basées sur le nom de l'élément de menu, vous pouvez utiliser un gestionnaire et d'appeler la routine appropriée en fonction du nom de l'élément qui déclenche l'événement.
OriginalL'auteur tinstaafl