c# - 如何在 C# PrintDocument 方法中跳转到下一个打印页
问题描述
我尝试了下面的代码,
Private void button1_click(object sender, EvenArgs e)
{
PrintDoument pd = new PrintDoument();
pd.PrintPage += new PrintPageEventHandler(this.printDocument_PrintPage1);
pd.Print();
}
Private void printDocument_PrintPage1(object sender, system.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawString("Test 1",new Font("Arial",8,FontStyle.Regular), Brushes.Black,50,500);
e.Graphics.DrawString("Test 2",new Font("Arial",8,FontStyle.Regular), Brushes.Black,50,1000);
e.HasMorePages = true;
e.Graphics.DrawString("Test 3",new Font("Arial",8,FontStyle.Regular), Brushes.Black,50,2000);
e.HasMorePages = false;
}
我想在下一页打印“Test 3”字符串,但它只打印一页。请告诉我一个方法来做到这一点。
解决方案
这里的根本问题是您的 PrintPage1 方法。这是不允许的。
你只需要一个 PrintPage 方法。它将被调用以打印第一页并将继续被调用,直到它返回 E.HasMorePages = false; 在每次调用之间,打印引擎将负责实际打印页面并为您提供一个新页面供您绘制。
此外,与您的问题无关:您在此处泄漏 Font 对象。它们有非托管资源,您必须处理它们。开始打印时创建它们,完成后丢弃它们。
推荐阅读
- linux - CygWin 配置脚本发现错误的 Python 版本
- c++ - 为 VScode 配置 CMake raylib-cpp
- android - 如何在 android studio 中正确实现 ProGuard?
- python - Django - 尝试更新模型对象时出现 ValueError
- c# - 如何使用 aync 文件操作在程序关闭时保存程序状态
- c - 将EXE注入另一个进程的C问题
- python - Python 不编程不结束
- bash - 在字符串替换期间使用 sed 替换变量
- git-bash - 为什么我不能在 Git Bash 中使用“更多”命令?
- bash - 在 Bash 中用另一个文件内容替换文件内容的最有效(就速度和行数而言)方法是什么?