Attached is a method to print a form if you want to :
Print controls as they appear on the form. Print a form that is larger than the window size.
Scale the printed output to the papersize.
It's not pretty and a little cumbersome but I couldn't find any simpler way with what I wanted to display. If it's of use to anyone....
Method:
In the example there are 4 pictureboxes and an MHSFlexgrid. Picture1 is the main scrollable picture within the form. Picture 2 is an additional picture located within the scrollable form picture. Pictures 3 and 4 are needed to paint images of Pictures 1 and 2 onto. Send pictures 3 and 4 to back by right clicking them. The sizes of pictures 3 and 4 aren't important as they are resized to the sizes and locations of pictures 1 and 2 at runtime. At runtime the visibility, backcolor and border styles are changed so that no part of them accidently prints out.
First up, Picture1 gets painted to Picture 2 which then gets sent to the printer. Unfortunately Picture3 and the flexgrid don't get painted so I had to do them seperately.
Paint the Flexgrid to Picture 2.
For some reason Picture 3 can't be painted to Picture 2 so I had to paint it to picture 4 then send picture4 to the printer seperately.
The attached should explain the rest. Note that if frames are used then these also have to be painted to invisible pictureboxes and sent to the printer seperately similar to what is required for Picture 3.
Hope it saves someone some grief.
Edit: PrintDialog reference removed as mentioned in following post.