雖然我不太喜歡它的感覺,但顯而易見的解決方案是創建一個打印事件,該事件是其他打印事件的聚合器。您勾住文檔打印事件,併爲每個需要打印的項目,手動激活其打印事件。
我想你會想要一個像IPrintableForm這樣的接口,它有一個方法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;
}
}
}
我喜歡你的方法......這個夜晚,我會試試看...並讓你知道。由於我有相當大的產品,所以這些改變需要時間。感謝 – Romias 2009-01-13 16:45:28