C# 如何在itext事件处理程序上获取对发送方的引用

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

如何在StarPage上的iTextSharp事件处理程序中获取对象发送方

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"; 
    }
}