C# Language Créer un événement annulable


Exemple

Un événement peut être annulé par une classe lorsqu'il est sur le point d'effectuer une action pouvant être annulée, telle que l'événement FormClosing d'un Form .

Pour créer un tel événement:

  • Créez un nouvel argument d'événement dérivant de CancelEventArgs et ajoutez des propriétés supplémentaires pour les données d'événement.
  • Créez un événement à l'aide de EventHandler<T> et utilisez la nouvelle classe d'argument event cancel que vous avez créée.

Exemple

Dans l'exemple ci-dessous, nous créons un événement PriceChangingEventArgs pour la propriété Price d'une classe. La classe de données d'événement contient une Value qui permet au consommateur de connaître le nouveau. L'événement se déclenche lorsque vous affectez une nouvelle valeur à la propriété Price et informe le consommateur que la valeur change et lui permet d'annuler l'événement. Si le consommateur annule l'événement, la valeur précédente de Price sera utilisée:

PriceChangingEventArgs

public class PriceChangingEventArgs : CancelEventArgs
{
    int value;
    public int Value
    {
        get { return value; }
    }
    public PriceChangingEventArgs(int value)
    {
        this.value = value;
    }
}

Produit

public class Product
{
    int price;
    public int Price
    {
        get { return price; }
        set
        {
            var e = new PriceChangingEventArgs(value);
            OnPriceChanging(e);
            if (!e.Cancel)
                price = value;
        }
    }

    public event EventHandler<PriceChangingEventArgs> PropertyChanging;
    protected void OnPriceChanging(PriceChangingEventArgs e)
    {
        var handler = PropertyChanging;
        if (handler != null)
            PropertyChanging(this, e);
    }
}