VS.NET打印页面设置(PageSetupDialog)页边距总是改变

问题:

初始设置的值得单位是百分之一英寸,    在出现的页面设置对话框中,页边距部分显示的单位是“页边距(毫米)”,可是实际显示在“左、右、上、下”后面的文本框中数字似乎是初始值的十分之一,而不是以“毫米”为单位数值。

当你什么也没改动就按下“确定”键时,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;
            }




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值