Printing margins and grayscale printing in C#

Hello,
I'm trying to set the current printing margins to some very low values (like 2mm, for example - 5mm AT MOST). Now, I have the following questions:
a) is this recommendable ? can the printer head get broken if I make it print so close to the paper margin ? (I'm asking this because maybe someone has done it before)
b) how do I set these margins ? I tried the following:
pdPrintDoc.DefaultPageSettings.Margins.Bottom = Convert.ToInt32(0.2*1/(2.54)*100);
pdPrintDoc.DefaultPageSettings.Margins.Left = Convert.ToInt32(0.2*1/(2.54)*100);
pdPrintDoc.DefaultPageSettings.Margins.Right = Convert.ToInt32(0.2*1/(2.54)*100);
pdPrintDoc.DefaultPageSettings.Margins.Top = Convert.ToInt32(0.2*1/(2.54)*100);
But it seems that it doesn't work!
c) how do I force the printer to print in grayscale mode from C# ?
Thank you all very much, and have a nice day!
Andrei Ismail
[922 byte] By [AndreiIsmail] at [2007-12-16]
# 1
I have not had a problem printing that close to the edge, but printers can be different in how they react. I would say go ahead and just make sure you leave some room in the margins.

You cannot change to Margins. You have to load those values into a new RectangleF object eg:

rect = New RectangleF(marginLeft, marginTop, docWidth, docHeight)

Then, when you call DrawString, load rect as the RectangleF property.

ta128 at 2007-9-9 > top of Msdn Tech,Windows Forms,Windows Forms General...