因为里面的PageSettings属性始终是随机的,在加一个PageSettings的变量,初始化之前将此值读到PageSetupDialog1里面,PageSetupDialog1对话框关闭后,在将 PageSetupDialog1的PageSettings属性赋值给自己加的变量。或者你调用PageSetupDialog1对象后,在整个程序中都不释放它的资源,好象也可以吧!

解决方案 »

  1.   

    比如:pageSetupDialog1.PageSettings.Margins.Bottom=10;
    pageSetupDialog1.PageSettings.Margins.Left=20;
    pageSetupDialog1.PageSettings.Margins.Right=30;
    pageSetupDialog1.PageSettings.Margins.Top=40;
    pageSetupDialog1.ShowDialog();
    这样每次初始化时都是按照你给的值显示,所以每次显示前要从赋值,结束后
    要记录结果
      

  2.   

    可是问题的关键是运行ShowDialog()方法后,pageSetupDialog.pageSettings.Margins的值并不是你在对话框中输入的值,而是被自动更改了,预览后得到的结果并不是自己所期望的结果。
      

  3.   

    那时有单位换算的原因,在pageSetupDialog里面输入的为毫米,而PageSettings.Margin里面的边距为百分之一英寸,1厘米(cm)=0.394英寸。好象有这个问题,在调用ShowDialog()方法前,对PageSetting.Margin赋值的话,单位为百分之一厘米,比如Margins.Bottom=100,ShowDialog()后底边距显示10毫米;ShowDialog()方法后,PageSetting.Margin的单位又变成百分之一英寸,Margins.Bottom就变成了39。我试了几个数都是这种结果,也就是说
    ShowDialog()之前单位为百分之一厘米,之后为单位百分之一英寸,所以在ShowDialog()之前使用默认的document的PageSeeting,因为document里面的PageSetting单位还为百分之一英寸,他们之间如果相互赋值的话,只传递数据,而不进行单位转化,这只是我的个人见解!