In
this post I will explain how you can declare an Event, event Handler and Event
Arguments class in c#.
Event Arguments –
As
per the example of Cricket application we have discussed in part 1 we need a
class who will explain more information about the event BallInGround so that
object like Fielder, Umpire and Fan can respond to it. This we will achieve by
defining Event Arguments class. .NET framework provides a standard class for
declaring event arguments and it is called as EventArgs. This class has no members. This class is used for
passing the event arguments to event handler method. So out declaration will be
as follows –
public class BallEventArgs : EventArgs
Event –
Next
we need to declare event in a class Ball. This can be declared with c# keyword “Event”. This keyword is used to inform
other objects who are interested to subscribe to it. Event declaration is as
follows –
public event EventHandler BallInGround;
Events
are usually public so that other interested objects can subscribe to them. In
our case other objects will be Fielder, Umpire and Fan. In above event
declaration we have used EventHandler keyword. For now understand it as a keyword
which used to describe the event handler method signature for this event. This
is defined in .NET. When you write EventHandler after an event
declaration means you state that the event handler methods will have 2
parameters, an object named sender and an EventArgs class reference variable e
and void return type. [EventHandler keyword here is actually a delegate but for
now to keep focus on Event understand it as a keyword provided in .NET or
understand it as a event of type EventHandler].
Event Handler –
Each
object of Fielder, Umpire and Fan will subscribe to BallInGround event. Event
handler methods you have been using for a long time. When you add a button on
UI and double click on it a method get’s added in code behind which is nothing
but an event handler method. So event handler method for BallInGround will also
be similar to button click event handler method. You might have seen following
type of declaration many times –
void ball_BallInGround(object
sender, EventArgs e)
In
above declaration the name of object reference, followed by underscore and then
name of event is a standard naming convention followed in .NET to declare event
handler methods. Hence the name - ball_BallInGround.
Subscribing to an Event
–
Once
we have event handler method written in various objects like Fielder, Umpire,
Fan all is remaining is just about registering for notification about event.
This is also termed as subscribing to event or hook up to event. Say our reference
variable is ball then event subscribing will be as follows –
ball.BallInGround += new
EventHandler(ball_BallInGround);
ball.BallInGround statement
tells compiler to subscribe event handler to BallInground event of any object
of type Ball.
+= This sign is the way to subscriber to event. A
part of syntax.
new EventHandler(ball_BallInGround);
This
statement specifies which event handler method to subscribe to the event.
ball_BallInGround – is the name of event
handler method.
Raising
an Event –
Ball object will notify
subscribers that it is in the ground. This is done by raising an event.
Following statement explains how to rise an event –
if (BallInGround != null)
{
BallInGround(this, e);
}
This explains all steps
about using an event in c#. Next part will be to create a live Cricket applicationusing Events in Part 3 - Click here.
C# Events - Part 1.
C# Events - Part 1.
No comments:
Post a Comment