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
Libérer: 2025-01-23 08:31:10
original
439 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal