Return to Snippet

Revision: 1687
at November 9, 2006 13:05 by rengber


Initial Code
//Define a custom EventArgs class to contain your data.  
  public class MyEventArgs : EventArgs
  {
    public string info = "data";
  }

//Declare the event as visible to users of the class

  public event EventHandler<MyEventArgs> MyEvent;


//Send the event, note that this will throw a nullref if there are no subscribers 

  //Internal version prevents outsiders from needing to know about the contents of MyEventArgs
  protected virtual void InternalSendMyEvent(CustomEventArgs e)
  {
    if(MyEvent != null)
    {
      e.info = "Hello Events!"; 
      //This calls all registered subscribers with the following parameters.   
      MyEvent(this, e);
    }
  }

  //Public version to allow outsiders to trigger the event, not typical implementation.   
  public void CreateEvent()
  {
    InternalSendMyEvent(new MyEventArgs());
  }



//Consumer
//Register the Handler
  
  eventRaiser.MyEvent += new EventHandler<CustomEventArgs>(HandleEvent);

//Define the Handler
  private void HandleEvent(object sender, MyEventArgs e)
  {
    MessageBox.Show("Event handled:" + e.info);
  }


//Cause the Event
  eventRaiser.CreateEvent();

Initial URL
http://msdnwiki.microsoft.com/en-us/mtpswiki/402101b6-555d-4cf7-b223-1d9fdfaaf1cd.aspx

Initial Description
Annotated version of the Microsoft/GotDotNet demo from the MSDN Wiki.

Initial Title
Generic Based Event Handling Demo for VS.Net 2005

Initial Tags
event

Initial Language
C#