2012-08-17 76 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