Title: Chapter Eleven
1Chapter Eleven
2Objectives
- Learn about delegates
- How to create composed delegates
- How to handle events
- How to use the built-in EventHandler
3Objectives
- How to handle Control component events
- How to add more events to an application
- How to use the Visual Studio IDE to generate
event-handling code - How to set Controls tab order
4Objectives
- How to use the sender object in an event
- How to add a main menu to a Form
- How to continue your exploration of C
5Understanding Delegates
- A delegate is an object that contains a reference
to a method - A delegate provides a way to pass a reference to
a method as an argument to another method - C provides a compromise between the dangers of
C pointers and the Java ban on passing
functions - You declare a delegate using the keyword
delegate, followed by an ordinary method
declaration including a return type, method name,
and argument list
6Understanding Delegates
- A delegate can encapsulate any method as long as
the method has the same return type and the same
number and types of arguments
7Creating Composed Delegates
- You can assign one delegate to another using the
operator - You can also use the and operators to
combine delegates into a composed delegate - Only delegates with the same argument list can be
composed, and the delegates used must have a void
return value - You can use the and - operators to remove a
delegate from a composed delegate
8Creating Composed Delegates
9Creating Composed Delegates
- Output of Delegate3 program
10Handling Events
- In C, an event occurs when something interesting
happens to an object - You use an event to notify a client program when
something happens to a class object the program
is using - To declare an event, you use a delegate
- An event handler requires two argumentsthe
sender and an EventArgs object
11Using the Built-in EventHandler
- The C language allows you to create events using
any delegate type - The .NET Framework provides guidelines you should
follow if you are developing a class that will be
used by others - For events that do not use any additional
information, the .NET Framework has already
defined an appropriate type named EventHandler
12Handling Control Component Events
- You can use the same techniques to handle events
generated or raised by GUI Controls as you do to
handle events raised by non-Control-generated
events
13Handling Control Component Events
- Some Control Class Public Instance Events
(continued)
14Adding More Events to an Application
- A Form can contain any number of Controls that
might have events associated with them - A single control might be able to raise any
number of events
15Using the IDE to Generate Event-Handling Code
- It is possible (and easier) to create
event-handling code using the IDE - The only difference between event-handling code
created by hand and the one you create using the
IDE is that the IDE automatically creates a lot
of code for you - The advantage of using the IDE is the time you
save typing and correcting typing errors - The advantage of creating methods by hand is that
you understand what each statement accomplishes
and are able to customize methods to perform
exactly the task you want
16Setting Controls Tab Order
- A Control is said to have focus if it raises an
event when the user presses Enter - TabStop is a Boolean property of a Control that
identifies whether the Control will serve as a
stopping place in a sequence of Tab key presses - TabIndex is a numeric property that indicates the
order in which the Control will receive focus
when the user presses the Tab key - When a Control has a TabIndex of 0, it receives
focus when the Form is initialized
17Setting Controls Tab Order
- ManyButtons Form with three Buttons
18Using the sender Object in an Event
- When a Form contains multiple widgets that you
can manipulate, you can write event handling
methods for each one - When a Form contains multiple widgets, you can
also write a single event-handling method that
can take appropriate action based on the Control
that generated the event - The Control that causes an event is represented
as a generic object in the object sender argument
to an event method
19Using the sender Object in an Event
- ManyButtons Form including Label
20Using the sender Object in an Event
- Every object has an Equals() method that can be
used to determine the sender object
21Adding a Main Menu to a Form
- Most programs you use in a Windows environment
contain a main menu - You can add a main menu to a Form by using the
MainMenu Control
22Continuing to Explore C
- The Visual Studio IDE contains numerous Controls,
each containing hundreds of properties and events - There are many resources that are available to
use to learn more about C, including - Help facility in the Visual Studio IDE
- Tutorials in the Help facility
- C discussion groups on the Internet
23Chapter Summary
- A delegate is an object that contains a reference
to, or encapsulates, a method - You can assign one delegate to another using the
operator. You also can use the and
operators to combine delegates into a composed
delegate that calls the delegates from which it
is built. - In C, an event occurs when something
interesting happens to an object - For events that do not use any additional
information, the .NET Framework has defined an
appropriate delegate type named EventHandler
24Chapter Summary
- When you use Controls like Buttons and ListBoxes,
they already contain events with names like
Click, DragOver, MouseEnter, and MouseLeave - A Form can contain any number of Controls that
might have events associated with them - When designing a Form with events, you can use
the Visual Studio IDE to automatically create a
lot of code for you - When users encounter multiple GUI Controls on a
Form, usually one Control has Focus
25Chapter Summary
- When a Form contains multiple widgets that you
can manipulate, you can write event-handling
methods for each one - Most programs you use in the Windows environment
contain a main menu, which is a horizontal list
of general options that appears under the title
bar of a Form - If you understand good programming principles
and, more specifically, the syntax and structure
of C programs, you will find learning about each
new C feature easier than learning about the
last one