首页 > 解决方案 > 如何在winforms c#中生成打印预览

问题描述

我正在尝试从 c# Winforms 中的表单生成打印预览。已经添加了 PrintPreviewDialog 和 PrintDocument 以及一些代码:

using System.Drawing.Printing;

private Bitmap myImage;

private void printDocument1_PrintPage(object sender, PrintPageEventArgs e)
{
     e.Graphics.DrawImage(myImage, 0, 0);
}
private void Button_Click(object sender, EventArgs e)
{
     Graphics g = this.CreateGraphics();
     myImage = new Bitmap(this.Size.Width, this.Size.Height, g);
     Graphics mg = Graphics.FromImage(myImage);
     mg.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, this.Size);
     printPreviewDialog1.ShowDialog();
}

单击按钮后,我得到打印预览,并且此“文档不包含任何页面”。任何人都知道为什么会这样?我错过了什么吗?

标签: c#winformsprint-preview

解决方案


在显示对话框之前,您需要将您的附加PrintDocument到打印预览对话框。

在您的示例中,在此行之前Button_Click()

printPreviewDialog1.ShowDialog();

您需要添加(假设printDocument1是您的名称PrintDocument):

printPreviewDialog1.Document = printDocument1;

请参阅PrintPreviewDialog (.NET 4.8)PrintDocument (.NET 4.8)文档中给出的示例,了解您可能需要进行的其他调整以获得所需的预览。


推荐阅读