
Understanding Events in C# Programming
Learn about the concept of events in C#, the differences between delegates and events, event syntax, handling raised events, managing event handlers, dealing with null events, and the significance of multicast events. Explore how Windows Forms utilize event handlers and EventArgs for GUI interactions.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
Events in C# Events in C# 1
Delegates vs. Events Delegates can be used as events Example CountDownTimerEvent -> CountDownDelegate But have certain problems Delegate can be hijacked Outsiders can make additional events The Event type overcomes these problems Example CountDownTimerEvent -> CountDownEvent Events in C# 2
Event syntax New keyword: event General syntax Public event SomeDelegateType SomeName; Examples Public event Action Finished; Public event Action<uint> Tick; Adding (attaching) and removing (detaching) event handlers Event handlers are method implementing the Delegate Type Add using the += operator Remove using the -= operator Example: CountDownTimerEvent Events in C# 3
Raising events: Beware of null! Unassigned events are null! Careful when you raise an event If (Tick != null) Tick(3); Is dangerous if another thread detaches a handler right after the if condition is evaluated Example: CountDownTimerEvent Why is the event null, and not just an empty List or something? Some classes has a lot of events, of which most are hardly ever used And we do not want to have a lot of empty List objects in memory Events in C# 4
Some classes have lots of different events A Windows Forms Button has 68(!) events Some examples BackgroundColorChanged BackgroungImageChanged Click DoubleClick DragDrop FontChanged GotFocus KeyDown MouseHover Resize And a lot more Most of these events you would never ever use Events in C# 5
Many-to-many relationship Multicast events One event can raise multiple event handlers Multi-handle One event handler can handle events from multiple sources Events in C# 6
Windows Forms: Event Handlers and EventArgs The delegate type Action can be used as the basis for GUI events, but it is not use as it is Windows Forms event handlers EventHandler, for button clicks Delegate void EventHandler(Object sender, EventArgs e) KeyEventHandler, for keyboard Delegate void KeyEventHandler(Object sender, KeyEventArgs e) MouseEventHandler, for mouse events Delegate void MouseEventHandler(Object sender, MouseEventHandler e) Etc. Events in C# 7
WPF: Event handlers and RoutedEventArgs WPF = Windows Presentation Foundation GUI API as Windows Forms, but newer Example: concurrency -> SimpleBrowserAsync RoutedEventArgs : EventArgs RoutedEventArgs extends EventArgs Example: CountDownTimerEvent -> CountDownWpfApp Events in C# 8
References and further reading MSDN Events Tutorial http://msdn.microsoft.com/en-us/library/aa645739(v=vs.71).aspx Bart De Smet: C# 5.0 Unleashed, Sams 2013 Chapter 18: Events, page 843-911 Nagel et al. Professional C# 5.0 and .NET 4.5.1, Wrox 2014 Chapter 8: Delegates, Lambdas, and Events, page 183-208 Events in C# 9