问题:
初始设置的值得单位是百分之一英寸, 在出现的页面设置对话框中,页边距部分显示的单位是“页边距(毫米)”,可是实际显示在“左、右、上、下”后面的文本框中数字似乎是初始值的十分之一,而不是以“毫米”为单位数值。
当你什么也没改动就按下“确定”键时,PageSetting 中的边距值(百分之一英寸) 与页面上的值(毫米)是相等的
感觉问题在,初始值向页面值得转换单位不一致,页面上的值转换成(百分之一英寸)是正确的;
根本原因:
我之前也查了很多资料,有的人说肯定一个bug,有人说不行,也有人说调用API,也有人说自己写。。。
但是有一点我受到的启发是一个是公制单位一个是美国单位,所以你首先要检查
(Window中区域选项/自定义/数字/度量衡 中有公制和美国)。
很明显,楼主使用的是公制,第一楼使用的是美制。
使用公制单位时要转换,请使用PrinterUnitConvert.Convert(mg, PrinterUnit.Display, PrinterUnit.TenthsOfAMillimeter);
可以简单的认为,Dialog认为初始值得单位是十分之一毫米,但是我们设置的初始值是百分之一英寸,
PrintDocument myDoc = new PrintDocument();
PageSetupDialog dia = new PageSetupDialog();
dia.PageSettings = (PageSettings)myDoc.DefaultPageSettings.Clone();
dia.PageSettings.Margins = PrinterUnitConvert.Convert(dia.PageSettings.Margins, PrinterUnit.Display, PrinterUnit.TenthsOfAMillimeter);
dia.AllowMargins = true;
dia.AllowPaper = true;
dia.AllowPrinter = true;
if (dia.ShowDialog() == DialogResult.OK)
{
myDoc.DefaultPageSettings = dia.PageSettings;
}