如何为我的类创建事件处理程序

时间:2009-07-06 08:57:09

标签: c# .net

我有以下课程

public class ButtonChange
{
   private int _buttonState;
   public void  SetButtonState(int state)
   {
            _buttonState = state;
   }
}

我想在_buttonState值发生变化时触发事件,最后我想在ButtonChange中定义一个事件处理程序

请问你帮我吗?

P.S:我不想使用 INotifyPropertyChanged

3 个答案:

答案 0 :(得分:7)

怎么样:

public class ButtonChange
{
   // Starting off with an empty handler avoids pesky null checks
   public event EventHandler StateChanged = delegate {};

   private int _buttonState;

   // Do you really want a setter method instead of a property?
   public void SetButtonState(int state)
   {
       if (_buttonState == state)
       {
           return;
       }
       _buttonState = state;
       StateChanged(this, EventArgs.Empty);
   }
}

如果您希望StateChanged事件处理程序知道新状态,您可以从EventArgs派生自己的类,例如ButtonStateEventArgs然后使用事件类型EventHandler<ButtonStateEventArgs>

请注意,此实现不会尝试使用线程安全。

答案 1 :(得分:1)

基于物业的活动筹集:

public class ButtonChange
{
    private int _buttonState;
    public int ButtonState
    {
        get { return _buttonState; }
        set 
        {
            if (_buttonState == value)
                return;
            _buttonState = value; 
            OnButtonStateChanged();

        }
    }

    public event EventHandler ButtonStateChanged;
    private void OnButtonStateChanged()
    {
        if (this.ButtonStateChanged != null)
            this.ButtonStateChanged(this, new EventArgs());
    }
}

答案 2 :(得分:0)

帮助自己使用谷歌“c#events msdn”

Events tutorial (C#) - MSDN如果你使用普通的c#。 INotifyPropertyChanged适用于WPF - POCO /简单类型事件不需要它