C#EventHandler - 没有重载匹配委托(是吗?)

时间:2012-02-09 23:08:33

标签: c# event-handling overloading

AfterOpenDocument事件工作正常,但是当我添加第二个事件BeforeSaveDocument时,我无法编译代码。

我收到的错误是:

  

QWApp_BeforeSaveDocument没有重载符合委托QuoteWerks.__Application_BeforeSaveDocumentEventHandler

我对c#很新,但我认为必须要有一些疏忽。

  QWApp.AfterOpenDocument  += new __Application_AfterOpenDocumentEventHandler(QWApp_AfterOpenDocument);
  QWApp.BeforeSaveDocument += new __Application_BeforeSaveDocumentEventHandler(QWApp_BeforeSaveDocument);

  void QWApp_AfterOpenDocument()
    {
        string todayDate = DateTime.Now.ToString("MM/dd/yyyy");
        QWApp.DocFunctions.SetDocumentHeaderValue("DocDate", todayDate, false);
        QWApp.DocFunctions.RefreshDisplay();
    }

   public void QWApp_BeforeSaveDocument(int iSaveAction, bool bCancel)
    {
        string todayDate = DateTime.Now.ToString("MM/dd/yyyy");
        QWApp.DocFunctions.SetDocumentHeaderValue("DocDate", todayDate, false);
        QWApp.DocFunctions.RefreshDisplay();
    }

3 个答案:

答案 0 :(得分:2)

正如编译器所说,__Application_BeforeSaveDocumentEventHandler委托的参数不同于QWApp_BeforeSaveDocument

确保两者的参数相同。

如果我猜测,您应该在ref bool bCancelout bool bCancel或(QWApp_BeforeSaveDocument}。再次,检查您的__Application_BeforeSaveDocumentEventHandler委托,并使您的函数具有相同的参数。

答案 1 :(得分:0)

这意味着处理程序的参数与事件(委托)的参数不匹配 检查委托构造函数的工具提示,找出它需要的参数。

答案 2 :(得分:0)

我对该库一无所知,但在此page上,BeforeSaveDocument事件的签名为BeforeSaveDocument (short, ref bool)

我会尝试将iSaveAction更改为short和/或使boolean参数成为ref参数并查看是否编译。