Comment faire pour obtenir l'invocation liste de tout événement
Comment obtenir la liste des délégués de forme de contrôle en WPF.
J'ai essayé le code suivant mais il sera de retour le domaine de l'info nulle
TextBox cont = new TextBox();
cont.TextChanged += new TextChangedEventHandler(cont_TextChanged);
FieldInfo fi = cont.GetType().GetField("TextChanged", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField | BindingFlags.Public | BindingFlags.Static);
Delegate del = (Delegate)fi.GetValue(cont);
double possible de Comment puis-je obtenir une liste des sous-jacents les délégués d'un événement à l'aide de la réflexion?
OriginalL'auteur Ponraja | 2012-01-09
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas pourquoi les gens disent qu'il n'est pas possible:
Permet de dire que vous souhaitez désactiver tout cas temporaire, vous pouvez créer une méthode comme ceci:
Vous pouvez l'appeler comme ceci:
Si vous voulez la rajouter, vous avez juste besoin de passer par la liste d'événements.
Je voulais dire que vous pouvez parcourir la liste que vous avez obtenu dans le DisableEvents méthode et Ajouter ces événements. Mais en fait, maintenant, il ya une meilleure façon de le faire et de le faire est d'appeler GetInvocationList pour récupérer tous les délégués.
Fonctionne pour moi! Testé avec un Contrôle simple.Cliquez sur l'événement. +1
OriginalL'auteur Kenneth J. Sanchez Venegas
L'approche décrite dans la réponse précédente, fonctionne parfaitement.
Cependant, pour l'utiliser, vous devez vous assurer que l'événement est mis en œuvre non pas comme un champ, mais comme une propriété. Dans le même temps, la référence au délégué est stocké dans l'objet interne de la classe Dictionary.
Vous pouvez en lire plus ici: Comment faire: Utiliser un Dictionnaire pour Stocker des Instances d'Événements (Guide de Programmation C#)
OriginalL'auteur retrograde.su