You should handle the Paint
event.
(and make sure to enable double-buffering)
Making large numbers of controls will lead to performance issues.
Also, painting everything yourself allows you to easily use more-complicated effects like transparency.
Alternatively, switch to WPF.