0 votes

Comment le compilateur génère-t-il le code du gestionnaire d'événements ?

J'ai ajouté un événement à un contrôle utilisateur et j'appelle l'événement dans la fenêtre de consommation du contrôle utilisateur,

Ma question est la suivante : quel code le compilateur génère-t-il lorsque nous assignons un gestionnaire d'événement via l'IDE ?

Ainsi, je peux également utiliser quelque chose de similaire pour écrire automatiquement le gestionnaire d'événement au moment de l'exécution.

Je sais que nous pouvons écrire un gestionnaire d'événement, par exemple le gestionnaire d'événement que j'ai écrit ici :

SearchControl.SearchChangedEvent += new RoutedEventHandler(SearchControl_SearchChanged);

L'erreur qui se produit dans ce cas est qu'il n'y a pas de correspondance de surcharge, j'essaie donc de faire la même chose que le compilateur par le biais du code. Comment le compilateur connaît-il automatiquement les arguments ?

EDIT : Solution.

J'ai trouvé dans cet article le sujet de préoccupation qui m'avait laissé perplexe : http://msdn.microsoft.com/hi-in/magazine/cc785480%28en-us%29.aspx

En "Aperçu des événements routés" l'auteur écrit :

Pour s'en convaincre, il suffit de se rendre dans le constructeur de de votre classe, cliquez avec le bouton droit de la souris sur l'élément InitializeComponent, et sélectionnez Go To Definition dans le L'éditeur affichera un fichier de code L'éditeur affichera un fichier de code généré (avec une de nom .i.g.cs ou .i.g.vb) contenant le code qui n'est pas contenant le code qui est normalement normalement généré au moment de la compilation.

J'ai trouvé le code derrière généré !

#line 6 "..\..\Window1.xaml"
this.myButton.Click += 
  new System.Windows.RoutedEventHandler(
  this.myButton_Click);

Merci, pour ceux qui ont été un peu déroutés par l'énoncé du problème. J'espère que c'est maintenant plus clair (c'était comme si je ne pouvais pas expliquer le problème jusqu'à ce que je trouve la solution :)

0voto

Blindy Points 26706

Vous avez décrit en détail votre SearchControl_SearchChanged à la seconde où vous l'avez passé en paramètre au délégué RoutedEventHandler . A partir de MSDN Le délégué prend 2 paramètres, un object et un RoutedEventArgs et renvoie void . C'est ce que l'IDE utilise pour construire le fichier SearchControl_SearchChanged pour vous permettre d'accéder automatiquement à l'en-tête de la fonction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X