PrintDialog选择了papersource

时间:2012-11-19 21:07:42

标签: c# .net crystal-reports printdialog

我正在尝试从PrintDialog类中选择打印选项后,将多个文档直接发送到打印机
我需要检索选定的文件来源。不幸的是,我只能从打印机找到所有的文件来源,而不是所选的文件来源
以下是我的代码示例(缩短版本):

CrystalDecisions.CrystalReports.Engine.ReportDocument document;

//...

PrintDialog pDialog = new PrintDialog();
pDialog.ShowDialog();

document.PrintOptions.PrinterName = pDialog.PrinterSettings.PrinterName;   //OK

//Here I need to set the papersource
//document.PrintOptions.PaperSource = ???

document.printToPrinter(pDialog.PrinterSettings.Copies, false, 0, 0)

我是否使用好的对象来做这件事?
注意:PageSetupDialog不提供打印机选项,因为我使用的是Windows 7。

1 个答案:

答案 0 :(得分:0)

我找到了Hans Passant评论中我的问题的答案。谢谢他。

为了从PaperSource获取PrintDialog,我必须为其设置假PrintDocument

PrintDialog不会直接保留论文来源。相反,它设置PrintDialog.Document.DefaultPageSettings.PaperSource

这是它的样子:

CrystalDecisions.CrystalReports.Engine.ReportDocument document;

PrintDialog pDialog = new PrintDialog();
pDialog.Document = new System.Drawing.Printing.PrintDocument();
pDialog.ShowDialog();

document.PrintOptions.PrinterName = pDialog.PrinterSettings.PrinterName;
document.PrintOptions.CustomPaperSource = pDialog.Document.DefaultPageSettings.PaperSource;

document.printToPrinter(pDialog.PrinterSettings.Copies, false, 0, 0);