2009-07-06 35 views
0

我有以下类如何创建事件处理程序我

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

我希望每当_buttonState值的变化,finaly我想在ButtonChange

请问你们定义的事件处理程序时触发事件请帮帮我??

P.S:我不想使用INotifyPropertyChanged的

回答

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>

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

0

如果使用的是普通的C#帮助自己与谷歌 “C#事件MSDN”

Events tutorial (C#) - MSDN。 INotifyPropertyChanged的是WPF - 你不需要它的POCO /简单类型的事件

+0

INotifyPropertyChanged的不只是为WPF,它是用来通知客户,一般客户绑定,一个属性值改变(从MSDN) 的http:// MSDN。 microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx – 2009-07-06 12:38:22

+0

从技术上讲,它可以使用..但它是WPF数据绑定的基石;在WPF上场之前,我个人还没有听说过这个界面。 – Gishu 2009-07-06 15:22:08

1

物业基于事件的认识:

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

     } 
    } 

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