«^»
11.2. Passing information from the object to each method

Although the Handler type has been declared without parameters, it is useful to pass information from the source of the event to each method. It is conventional for the delegate type to have two parameters: one being a pointer to the object causing the event, and the other containing information about the event.

So usually the delegate type is like:

delegate void Handler(object pSource, XEventArgs pXEventArgs);

where XEventArgs is a class derived from System.EventArgs.