I recently ran into a neat little nugget of functionality in C# with events. Normally in C# when we define events we stop at something like this:

public event EventHandler<MyEventArgs> MyEvent;

The thing is, you can explicitly implement the add and remove accessors if you throw some curly braces into the mix. Why does this matter? Imagine that you have a MainForm, and a usercontrol named ControlPanel. ControlPanel contains another usercontrol called hiddenControl that exposes an event that you want to handle in MainForm, but all MainForm has access to is ControlPanel…

public event EventHandler<MyEventArgs> MyEvent{
	add{
		this.hiddenControl.MyEvent += value;
	}
	remove{
		this.hiddenControl.MyEvent -= value;
	}
}

Now you can subscribe to the event in MainForm without making the usercontrol member public in ControlPanel.

[ Currently Playing : Burn Away - Foo Fighters - One by One (4:57) ]