#382 – Handling an Event that Returns Some Data
August 4, 2011 Leave a comment
When you implement an event that returns data, you can use the EventHandler<TEventArgs> delegate type.
When you use the EventHandler<TEventArgs> delegate type, you define a new class that inherits from EventArgs. A client that wants to handle the new event will need access to this new class.
Suppose that a Dog class implements a Barked event that has the following signature:
public event EventHandler<BarkedEventArgs> Barked;
You would then add an event handler that accepts two parameters:
- Parameter of type object, which references the object that raised the event
- Parameter of type BarkedEventArgs, which contains the data the event wants to pass back
Here’s the complete example:
static void Main() { Dog kirby = new Dog("Kirby"); kirby.Barked += kirby_Barked; kirby.Bark("Grrr"); } // Handle the Barked event static void kirby_Barked(object o, BarkedEventArgs e) { Console.WriteLine("Kirby barked: {0}", e.BarkSound); }