2009-07-06 80 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()); 
    } 
} 
相關問題