2012-08-17 94 views
2

我有一個應用程序,它有兩個選項,用於打印報表或預覽報表。我有以下代碼來打印報告 -如何在C#中執行打印預覽Crystal Reports 2010

FCPMS.Reports.rptPanelStudy crtrptPanelStudy = new FCPMS.Reports.rptPanelStudy(); 
crtrptPanelStudy.FileName = tReportFileName; -(refers to the file location on the computer) 
crtrptPanelStudy.DataDefinition.FormulaFields["PANELNUM"].Text = "'5'"; 
foreach (Table tblTable in crtrptPanelStudy.Database.Tables) 
{ 
    tiInfo = tblTable.LogOnInfo; 
    tiInfo.ConnectionInfo = ciConnection; 
    tblTable.ApplyLogOnInfo(tiInfo); 
} 

crtrptPanelStudy.PrintToPrinter(1, false, 0, 0); 

這可正常工作並打印報告。但是,我無法找到類似的代碼來簡單地使用此報告打開打印機預覽。有誰知道我該怎麼做?我只需要打印機預覽即可在沒有報告實際打印的情況下彈出。任何幫助,將不勝感激。

我還試圖用打印對話框 -

PrintPreviewDialog printpreview = new PrintPreviewDialog(); 
printpreview.Document = crtrptFlowRangeSummary; 
printpreview.ShowDialog(); 

,但得到的第二行此錯誤

錯誤35無法隱式轉換類型FCPMS.Reports.rptFlowRangeSummarySystem.Drawing.Printing.PrintDocument

+0

有你看着PrintPreviewDialog上? http://msdn.microsoft.com/en-us/library/system.windows.forms.printpreviewdialog.aspx – MethodMan 2012-08-17 13:17:53

+0

是的,但沒有奏效。詳情請參閱我編輯的問題。 – 2012-08-17 13:26:35

+0

您需要CrystalReportPrintPreviewForm – MethodMan 2012-08-17 13:32:37

回答

0

我不知道你是如何實現或聲明crtrptFlowRangeSummary,但你可以嘗試下面的代碼。

這也假設你有事件聲明如下

private void CrystalReportPrintPreviewForm_Load(object sender, EventArgs e) 
{ 
    if(crtrptFlowRangeSummary !=null) 
    crystalReportViewer1.ReportSource = crtrptFlowRangeSummary; 
} 


CrystalReportPrintPreviewForm crystalReportPrintPreview = 
     new CrystalReportPrintPreviewForm(crtrptFlowRangeSummary); 
crystalReportPrintPreview.ShowDialog(); 
+0

我沒有那個事件。它被聲明爲最高(見編輯的問題代碼),然後代碼位於PrintReport函數中。 – 2012-08-17 13:58:53

+0

看看這篇文章,它應該提供一些額外的幫助http://stackoverflow.com/questions/6633062/solve-nullreference-exception – MethodMan 2012-08-17 14:01:36