代码之家  ›  专栏  ›  技术社区  ›  Romias

打印多页不同数据

  •  3
  • Romias  · 技术社区  · 16 年前

    在我的应用程序中,我有几个打印特定数据的表单。为了实现这一点,我使用了printdocument printpage事件。

    如果一个报表有多个页面,我将hasmorepages标志设置为true,然后事件再次被激发,我有责任从上一页末尾的位置继续打印。

    现在,我需要在一个打印文档中打印所有这些报表,并且我希望重用每个报表的代码,以便在一个打印按钮中,用户可以打印所有报表。我们的想法是不打印几个文件。

    你的方法是什么?

    1 回复  |  直到 12 年前
        1
  •  2
  •   plinth    16 年前

    尽管我不太喜欢这种感觉,但显而易见的解决方案是创建一个打印事件,它是其他打印事件的聚合器。您钩住文档打印事件,对于需要打印的每个项目,您手动触发其打印事件。

    我认为您将要创建一个类似iprintableForm的接口,该接口有一个方法doprintEvent(对象发送方,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;
            }
        }
    }