在我的应用程序中,我有几种打印特定数据的表单。为此,我使用 PrintDocument PrintPage 事件。
如果一份报告超过 1 页,我将 hasMorePages 标志设置为 true,然后再次触发事件,我有责任从最后一页末尾的位置继续打印。
现在,我需要在一个 PrintDocument 中打印所有这些报告,并且我想重复使用每个报告的代码,以便用户可以在一个打印按钮中打印所有报告。这个想法是不打印多个文档。
您会采用什么方法来做到这一点?
最佳答案
虽然我不太喜欢它的感觉,但显而易见的解决方案是创建一个打印事件,它是其他打印事件的聚合器。您挂接到文档打印事件,并且对于需要打印的每个项目,您手动触发其打印事件。
我想你会想要制作一个像 IPrintableForm 这样的接口(interface),它有一个方法 DoPrintEvent(object sender, PrintPageEventArgs args);
然后您的聚合器获取一堆需要打印的表单并将其存储在实例变量中并执行如下操作:
private multiDocPageEventHandler(object sender, PrintPageEventArgs args)
{
if (printStack == null) { // all done
throw new Exception("This should never happen.");
}
else { // send to top of stack
printStack.Peek().DoPrintEvent(sender, args);
if (!args.HasMorePages) {
printStack.Pop();
}
args.HasMorePages = printStack.Count > 0;
if (!args.HasMorePages) {
printStack = null;
}
}
}
关于.net - 打印多页不同数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/439591/