如何修复WPF卡在打印问题上的Crystal Report Viewer?

时间:2019-05-08 04:28:14

标签: wpf crystal-reports

我正在使用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()方法在所有报表中都是通用的。

0 个答案:

没有答案