我正在尝试使用PageSetupDialog设置文档的打印页面。
在打开对话框之前,文档设置正确,页面大小和页面源也正确设置。 但是,在选择不同的纸张尺寸和纸张来源后从对话框返回时,纸张尺寸未正确反映,而纸张来源正常。 是的,我按下确定按钮。
这个问题并不新鲜,但到目前为止还没有正确答案。
PageSetupDialog dlgPageSetup = new PageSetupDialog();
dlgPageSetup.Document = this.printDocument1; //this is fine, assume that.
dlgPageSetup.PageSettings.PaperSize = new PaperSize("My Custom", 1012, 800);
dlgPageSetup.PageSettings.PaperSource.SourceName = "Envelope";
if (dlgPageSetup.ShowDialog(this) == DialogResult.OK) {
System.Diagnostics.Trace.WriteLine("DEBUG: "
+ dlgPageSetup.PageSettings.PaperSize);
System.Diagnostics.Trace.WriteLine("DEBUG: "
+ dlgPageSetup.PageSettings.PaperSource);
}
我正在使用.Net 2.0,VS 2k5。
我猜这仍然是一个错误,它与自定义页面大小有关。有没有人能解决这个问题?
答案 0 :(得分:1)
我通过以下方式解决了这个问题:
因此,在打开printsettings对话框之前,我检查打印文档的PageKind,必要时重新创建,然后打开对话框。
if(printDocument1->DefaultPageSettings->PaperSize->Kind ==
System::Drawing::Printing::PaperKind::Custom)
{
RecreatePrintDocument();
}
pageSetupDialog1->PageSettings = printDocument1->DefaultPageSettings;
pageSetupDialog1->PrinterSettings = printDocument1->PrinterSettings;
Windows::Forms::DialogResult dresult = pageSetupDialog1->ShowDialog();
在RecreatePrintDocument()中,我创建了一个新的printdocument并分配了处理程序,这类事情。
这不是一个很好的解决方案,因为如果用户选择自定义页面类型,我们就会忘记页面设置,但这是开始的。
答案 1 :(得分:1)
这是一个已知的错误。直到.NET 3.5,它仍然是可重现的。有关线程http://social.msdn.microsoft.com/forums/en-US/winforms/thread/81bb2cea-8d47-4ddc-a174-14d6bc196de7/
的更多详细信息