I want to argue on the following statement: the problem does not have good solution at the level of abstraction based on the information you provided. Such solution could be either universal but produce ugly look in many cases, or it would look good enough if based on some assuptions, but would not fit all cases.
At the same time, it's possible that the problem is well solvable at the level of your application; you would only need to make assumptions instead of trying to make the solution universal. But you did not provide enough information on your application, so you have to deal with it by yourself. Please see my comment to the question.
One universal solution is this:
http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.powerpacks.printing.printform.aspx[
^].
Another one is this:
Form Print Control[
^].
You can also use the ideas and do something close to your needs if you read the article.
So, why the universal solution is not good enough? This is simple. Because paper is not screen and not interactive. In a window form, you always have
DataGridView
scrolling, and can add form resize and zoom and/or pan. None of that would work for paper. The data, elementary, may not fit.
Generally, printing from UI controls is not the best idea. More advanced and regular idea is to print using the data source.
—SA