class="codeShade"> /* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852 */ // A .NET-compatible event. using System; // Derive a class from EventArgs. class MyEventArgs : EventArgs { public int eventnum; } // Declare a delegate for an event. delegate void MyEventHandler(object source, MyEventArgs arg); // Declare an event class. class MyEvent { static int count = 0; public event MyEventHandler SomeEvent; // This fires SomeEvent. public void OnSomeEvent() { MyEventArgs arg = new MyEventArgs(); if(SomeEvent != null) { arg.eventnum = count++; SomeEvent(this, arg); } } } class X { public void handler(object source, MyEventArgs arg) { Console.WriteLine("Event " + arg.eventnum + " received by an X object."); Console.WriteLine("Source is " + source); Console.WriteLine(); } } class Y { public void handler(object source, MyEventArgs arg) { Console.WriteLine("Event " + arg.eventnum + " received by a Y object."); Console.WriteLine("Source is " + source); Console.WriteLine(); } } public class EventDemo5 { public static void Main() { X ob1 = new X(); Y ob2 = new Y(); MyEvent evt = new MyEvent(); // Add handler() to the event list. evt.SomeEvent += new MyEventHandler(ob1.handler); evt.SomeEvent += new MyEventHandler(ob2.handler); // Fire the event. evt.OnSomeEvent(); evt.OnSomeEvent(); } } |
0