Maison >développement back-end >C++ >Comment puis-je transmettre des paramètres supplémentaires à un gestionnaire d'événements en C# ?

Comment puis-je transmettre des paramètres supplémentaires à un gestionnaire d'événements en C# ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-23 08:31:10438parcourir

How Can I Pass Extra Parameters to an Event Handler in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn