C# 如何在itext事件处理程序上获取对发送方的引用
如何在StarPage上的iTextSharp事件处理程序中获取对象发送方C# 如何在itext事件处理程序上获取对发送方的引用,c#,events,event-handling,itextsharp,C#,Events,Event Handling,Itextsharp,如何在StarPage上的iTextSharp事件处理程序中获取对象发送方 class _Events : PdfPageEventHelper { public override void OnStartPage(PdfWriter writer, Document document) { base.OnStartPage(writer, document); Paragraph paragraph = new Paragraph("TITUL
class _Events : PdfPageEventHelper
{
public override void OnStartPage(PdfWriter writer, Document document)
{
base.OnStartPage(writer, document);
Paragraph paragraph = new Paragraph("TITULO DE TODOS LOS REPORTES\n\n", FontFactory.GetFont("Arial", 9, iTextSharp.text.Font.BOLD));
paragraph.Alignment = Element.ALIGN_CENTER;
document.Add(paragraph);
//I NEED THE OBJECT HERE
}
}
由于无法更改方法签名,因此需要另一种机制来显示哪个页面发送了文档 一种愚蠢但相当有效的方法是在某个共享对象中保存一个字典,将页面映射到文档
Dictionary<Page, Document>.
如何调用代码?在_Events类中创建一个参数。将类的名称作为构造函数的参数传递给事件处理程序。我终于解决了它。如果有人需要它: 类_事件:PdfPageEventHelper { 公共虚拟字符串pintaTitulo{return 000;} } 然后:
class _EventsInherited : _Events
{
public _EventsInherited(){}
public override string pintaTitulo()
{
return "subTitle";
}
}
并将文档类引用到:_eventssinherited您有对页面的引用这还需要什么?我有5个类对该事件处理程序的引用,如何知道哪个类调用该事件?1。Itext页面事件不允许文档。请在其中添加操作。仅添加到其中的直接内容。2.OnStartPage完全不是为文档更改而设计的,仅用于记账目的。3.请解释您需要知道事件源的用户案例。在5个不同的类5个不同的报告中,我使用如下事件处理程序:PdfPageEventHelper pageeventhandler=new\u Events;wri.PageEvent=pageeventhandler;我需要知道哪个类调用该事件。如上所述:ItextSharp页面事件的设计不允许文档。在其中添加操作。它可能看起来工作正常,然后以有趣的方式让你失望。
class _EventsInherited : _Events
{
public _EventsInherited(){}
public override string pintaTitulo()
{
return "subTitle";
}
}