如何在winforms c#中生成打印预览

How to generate a print preview in 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();
}

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

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

在您的示例中,在 Button_Click() 中的这一行之前:

printPreviewDialog1.ShowDialog();

你需要添加(假设printDocument1是你的PrintDocument的名字):

printPreviewDialog1.Document = printDocument1;

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