Events are handled by delegates. Essentially, a delegate is an object that encapsulates the description of a method to which you may delegate responsibility for handling the event.
Event handlers must always take two parameters and return nothing (in
VB.NET, use a Sub
, in C# return
void
). The first parameter represents the object
raising the event. The second, called the event
argument
, contains information specific to the
event, if any. For most events, the event argument is of type
EventArgs,
which does not expose any properties. So the general prototype for an
event in Visual Basic is:
Private Sub EventName
(ByVal sender As Object, _
ByVal e As EventArgs)
and the general prototype for an event in C# is:
private void EventName
(object sender, EventArgs e)
For some controls, the event argument may be of a type derived from EventArgs and may expose properties specific to that event type. For example, the AdRotator control’s AdCreated event handler receives an argument of type AdCreatedEventArgs, which has the properties AdProperties, AlternateText, ImageUrl, and NavigateUrl. The specifics of the event argument for each control are detailed in Chapter 5.
Note that when using Visual Studio .NET, the IDE often
inserts qualifying namespaces in front of parameter types in event
handler declarations. These are redundant, as long as the relevant
namespace is already referenced in the project using a
using
statement in C# or an
Imports
statement in VB.NET. For example, the
default Page_Load event handler in
VB.NET inserted by Visual Studio .NET looks like:
Private Sub Page_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load
The following declaration works equally as well, since the System namespace is automatically imported into ASP.NET applications:
Private Sub Page_Load(ByVal sender As Object, _ ByVal e As EventArgs) Handles MyBase.Load
The default Page_Load event handler in C# inserted by Visual Studio .NET looks like:
private void Page_Load(object sender, System.EventArgs e)
while all that is strictly necessary is:
private void Page_Load(object sender, EventArgs e)
18.227.102.162