创建可取消的事件

可取消的事件可以由一个类被升高,当它是即将执行可以取消的动作,如 FormClosing 一个的事件 Form

要创建此类事件:

  • 创建一个源自 CancelEventArgs 的新事件 arg,并为事件数据添加其他属性。
  • 使用 EventHandler<T> 创建一个事件,并使用你创建的新取消事件 arg 类。

在下面的示例中,我们为类的 Price 属性创建了 PriceChangingEventArgs 事件。事件数据类包含一个 Value,让消费者知道新的。当你为 Price 属性分配新值并让消费者知道值正在改变并让他们取消该事件时,该事件会引发。如果消费者取消该事件,将使用 Price 的先前值:

PriceChangingEventArgs

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

产品

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);
    }
}