Aller au contenu

Pattern standard EventHandler et EventArgs

Contexte : Le pattern d’événement standard .NET utilise le délégué EventHandler et EventArgs (ou une classe dérivée) pour transmettre les données de l’événement.

public delegate void EventHandler(object sender, EventArgs e);
public delegate void EventHandler<TEventArgs>(object sender, TEventArgs e);
public class OrderEventArgs : EventArgs
{
public int OrderId { get; set; }
public decimal Amount { get; set; }
}
public class OrderProcessor
{
public event EventHandler<OrderEventArgs> OrderProcessed;
protected virtual void OnOrderProcessed(OrderEventArgs e)
{
OrderProcessed?.Invoke(this, e);
}
public void Process(int orderId, decimal amount)
{
// logique de traitement
OnOrderProcessed(new OrderEventArgs { OrderId = orderId, Amount = amount });
}
}

Tous les frameworks UI .NET : Button.Click utilise EventHandler. Form.Load utilise EventHandler. DataGridView.CellClick utilise DataGridViewCellEventArgs dérivé de EventArgs.

Exemple : La documentation de System.EventArgs montre de nombreux types dérivés.