So you are basically printing a screen shot? not good.
You should be creating a print document based on the data.
so you go through each data field and draw that on the print document where you want it. This is not so simple as you will need to calculate positioning and also take page breaks into account.
I would suggest you create a couple of 'helper' classes that you can store a list of data values (and matching labels)
And then you print document event can loop through them and draw each value on a new line (for a very simple layout)
Before you draw each control you will want to check if the intended position is in the region of the printable area. If not you need to add a new page and continue drawing.
Maybe a
link[
^] will help you better with this...