C # EventHandler - нет перегрузки соответствует делегату (да?) - PullRequest
2 голосов
/ 10 февраля 2012
Событие

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 ]

2 голосов
/ 10 февраля 2012

Как говорит компилятор, __Application_BeforeSaveDocumentEventHandler делегат имеет аргументы, отличные от QWApp_BeforeSaveDocument.

Убедитесь, что аргументы одинаковы для обоих.

Если бы я догадался, у вас должно быть ref bool bCancel или (менее вероятно, out bool bCancel) в QWApp_BeforeSaveDocument. Опять же, проверьте ваш __Application_BeforeSaveDocumentEventHandler делегат и сделайте так, чтобы ваша функция имела те же аргументы.

0 голосов
/ 10 февраля 2012

Я ничего не знаю об этой библиотеке, но на этой странице подпись для события BeforeSaveDocument BeforeSaveDocument (short, ref bool)

Я бы попробовал изменить iSaveAction на short и / или сделать логический параметр параметром ref и посмотреть, скомпилируется ли он.

0 голосов
/ 10 февраля 2012

Это означает, что параметры вашего обработчика не соответствуют параметрам события (делегата).
Проверьте подсказку для конструктора делегата, чтобы выяснить, какие параметры он принимает.

...