c# - 如何在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)和PrintDocument (.NET 4.8)文档中给出的示例,了解您可能需要进行的其他调整以获得所需的预览。
推荐阅读
- azure - Azure SQL 数据库 - 禁用 SQL Server 身份验证模式
- javascript - D3.js:使用滑块更改导入文件
- c# - Viewstate 验证失败 Asp.net
- vsphere - Vmware 中的 PSC 和 VC
- python - 解析嵌入的 css beautifulsoup
- undefined - Game Maker: DoAdd: 2: undefined value
- ruby - 从另一个规范运行规范?
- c# - System.Core.dll 中出现“System.invalidOperationException”类型的异常,但未在用户代码中处理
- mysql - 优化mysql联合查询
- jmeter - JMeter 5.0 / "JMeterUtils: ERROR! Resource string not found" @ Aggregate Report