First of all, printing the control is not such a good idea, because it would violate the isolation between data and presentation. If printing and the loop of UI could be identical in all cases, it would be find, but usually, this is not the case.
For example, imaging you print some check boxes. What, someone should click them on paper? Printed presentation is usually somewhat different from the on-screen UI. The media is very different. Print is arranges on the piece of paper, which is very different from screen.
Therefore, it's always good to isolate data layer, or data model. In this case, you can print and present data from the same data layer, but not print from scree.
Basically, use the class
You will find a very clear code sample at the end of the help page referenced above.