Defining a public
event merely gives consumers the ability to subscribe and unsubscribe from it. The ability to raise the event is limited to the type hierarchy which declares the event.
Allowing all subscribers to also be able to raise the event would be a bit chaotic. Imagine for example I had a TextBox
class which had a Focused
event. If any old consumer could raise the event then the Focused
event could easily fire when the TextBox
class wasn't actually focused. This would make it nearly impossible to maintain any type of invariant during an event.