The try-and-true method is designed to use an off-screen raster image, which is updated only when the actual data provided by your control; then all OnPaint needs to do is display a bitmap on the screen.
If your drawing process is intensive, and since you have so many controls, you will find that it greatly affects the performance of your application.
Please note that using the DoubleBuffering control property in your case will not help - it allows WinForms to display on the screen bitmap before displaying on the screen, but this still happens with each paint cycle, since WinForms does not track when the view has changed.
So, you have to collapse yourself. It is not that difficult. Here's what looks like a pretty good article on the subject .
Ben m source share