2012-11-19 35 views
1

PrintDialog類中選擇打印選項後,我試圖直接將多個文檔發送到打印機。

我需要檢索選定的papersource。不幸的是,我只能從打印機中找到所有的紙張來源,而不是所選的紙張。

這裏是我的代碼示例(縮短版):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) 

我使用的好對象做到這一點?

注意:由於我使用Windows 7

+0

PageSetupDialog不提供「打印選項」,其文件屬性確實。首先選擇打印機,然後選擇頁面設置。 –

+0

問題是我可以在'PrintDialog'窗口中選擇papersource,但是我無法在代碼中將它發回給我的文檔。 –

+0

您需要分配PrintDialog.Document屬性。 –

回答

0

我找到了答案,我與Hans帕桑特評論問題PageSetupDialog不提供我的打印機選項。感謝他。

爲了從PrintDialog得到PaperSource,我必須設置一個假的PrintDocument它。

PrintDialog不直接保存papersource。相反,它設置了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); 
+0

介紹解釋downvote?可能有助於找到一個「真正的」解決方案。 –

相關問題