📜  winforms reportviewer.print 报告 - C# (1)

📅  最后修改于: 2023-12-03 15:05:58.028000             🧑  作者: Mango

WinForms ReportViewer.Print 报告 - C#

在WinForms中,ReportViewer是一个强大的工具,它允许程序员生成、查看和导出报告。ReportViewer控件带有自己的打印按钮,但是有时需要在程序中提供自定义打印选项和功能。这时就需要使用ReportViewer.Print方法。

ReportViewer.Print方法

ReportViewer.Print方法是一个非常有用的方法,它可以让程序员以多种方式打印报告,包括预览、选择打印机、选择纸张大小等。

// 使用Print方法打印预览
this.reportViewer1.PrintDialog();

// 选择打印机和纸张大小
this.reportViewer1.PrintDialog(PrinterSettings, PageSettings);
使用Print方法实现自定义打印

如果希望实现自定义打印选项和功能,可以使用Print方法中的参数来实现。

1. 自定义打印对话框

可以创建自己的对话框来获取用户的打印选项,然后使用PrintDialog(PrinterSettings, PageSettings)方法将选项应用到ReportViewer控件中。

private void btnPrint_Click(object sender, EventArgs e)
{
    // 获取打印选项
    var printerSettings = new PrinterSettings();
    var pageSettings = new PageSettings();
    var printDialog = new PrintDialog();
    printDialog.Document = this.reportViewer1.PrinterSettings.CreateMeasurementGraphics().Graphics;
    printDialog.UseEXDialog = true;
    if (printDialog.ShowDialog() == DialogResult.OK)
    {
        printerSettings = printDialog.PrinterSettings;
        pageSettings = printDialog.PrinterSettings.DefaultPageSettings;
    }

    // 使用打印选项打印ReportViewer控件
    this.reportViewer1.PrintDialog(printerSettings, pageSettings);
}
2. 自定义打印预览

默认情况下,ReportViewer控件将在打印前显示预览窗口。可以使用PrintDialog()方法来获取绘图对象并在自己的窗口中显示预览。

private void btnPreview_Click(object sender, EventArgs e)
{
    // 获取打印绘图对象
    var graphics = this.reportViewer1.PrinterSettings.CreateMeasurementGraphics().Graphics;

    // 在自定义窗口中显示预览
    var printPreviewDialog = new PrintPreviewDialog();
    printPreviewDialog.Document = this.reportViewer1.LocalReport.CreateFixedDocument();
    printPreviewDialog.Document.SetDefaultPageSettings(this.reportViewer1.PrinterSettings.DefaultPageSettings);
    printPreviewDialog.WindowState = FormWindowState.Maximized;
    typeof(Form).InvokeMember("DoubleBuffered", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty, null, printPreviewDialog, new object[] { true });
    printPreviewDialog.ShowDialog();
}
总结

WinForms ReportViewer控件的Print方法是一个非常有用的功能,可以实现自定义打印选项和功能。程序员可以使用PrintDialog()方法获取打印选项或自定义打印预览窗口。