我正在使用Crystal Reports开发WPF应用程序。我需要在单击一次按钮时显示四个报告。为此,我正在使用自定义的可关闭选项卡控件。当用户单击“打印”按钮时,我的四个不同功能将一一执行,每个功能获取数据并动态显示报告查看器。对于单个报告没有问题。但是对于这4个单击报告,当所有四个报告都显示在四个不同的选项卡中,并且用户单击任何报告的“打印”按钮时,尽管报告转到了打印机,但查看器“忙碌的圈子”仍然显示报告正在忙于打印,看起来好像观众挂了。
下面是我的代码
private void PrintFirstReport()
{
try
{
List<Student> students = GetSomeData();
ReportDocument report = new Reports.rptStudent();
report.SetDataSource(students);
AddNewTab(report, reportName);
}
catch (Exception)
{
throw;
}
}
private void AddNewTab(ReportDocument report, string reportTab)
{
try
{
string title = reportTab;
SAPBusinessObjects.WPF.Viewer.CrystalReportsViewer crv = new SAPBusinessObjects.WPF.Viewer.CrystalReportsViewer()
{
Name = reportTab,
ToggleSidePanel = SAPBusinessObjects.WPF.Viewer.Constants.SidePanelKind.None,
ShowToggleSidePanelButton = false,
};
crv.ViewerCore.ReportSource = report;
Frame frame = new Frame();
ClosableTab tabItem = new ClosableTab { Tag = reportTab };
frame.Content = crv;
tabItem.Name = reportTab;
tabItem.Title = title;
tabItem.Content = frame;
tcReports.Items.Add(tabItem);
tabItem.Focus();
}
catch (Exception)
{
throw;
}
}
AddNewTab()方法在所有报表中都是通用的。