Maison >développement back-end >C++ >Comment puis-je transmettre des paramètres supplémentaires à un gestionnaire d'événements en C# ?
Transmission de données supplémentaires aux gestionnaires d'événements C#
Les gestionnaires d'événements sont cruciaux en C# pour répondre aux événements. Cependant, la signature du gestionnaire d'événements standard ne fournit souvent que l'objet sender
. Cela limite la capacité à transmettre un contexte supplémentaire. Explorons une solution :
Considérez ce scénario :
<code class="language-csharp">private void setup(string someData) { Object.assignHandler(evHandler); // Only sender is passed } public void evHandler(Object sender) { // someData is inaccessible here }</code>
someData
est nécessaire dans evHandler
, mais le mécanisme d'événement standard ne permet pas son inclusion directe.
La solution d'expression Lambda
La solution réside dans l'utilisation d'une expression lambda lors de l'attribution du gestionnaire d'événements :
<code class="language-csharp">private void setup(string someData) { Object.assignHandler((sender) => evHandler(sender, someData)); // Lambda expression to pass additional data } public void evHandler(Object sender, string someData) { // Now someData is accessible! }</code>
L'expression lambda (sender) => evHandler(sender, someData)
crée une méthode anonyme. Cette méthode reçoit l'objet sender
de l'événement, puis appelle evHandler
, en passant à la fois sender
et someData
. Cela vous permet effectivement d'injecter des paramètres supplémentaires dans votre gestionnaire d'événements. Cette approche offre une flexibilité et un contrôle accrus sur les données transmises à votre logique de gestion des événements.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!