2009-05-02 2 views
3

Мне нужно отобразить пользовательскую форму вместо стандартной формы инспектора для элемента назначения перспективы. Я хочу сделать это на C#.VSTO - обработчик событий Outlook в C#

Существует хороший учебник по devx, но он использует VB, и я хочу использовать C#. Поэтому я перевел код на C#, и у меня возникла проблема, когда мне нужно переопределить обработчик события Open для AppointmentItem (так называемый mcAI). В вышеупомянутом ституте, говорят они, чтобы сделать следующее в VB:

Private Sub tyAI_Open(ByRef Cancel As Boolean) Handles tyAI.Open 
    Cancel = True 
End Sub 

который мне переводится как:

private void mcAI_Open(out bool Cancel) 
{ 
    Cancel = true; 
} 

(Примечание Я попытался это с и без out и ref параметра и с/без объекта в качестве первых пар тоже)

Однако нам нужно зарегистрировать, что это с этим событием, так что я положил в этом коде:

mcAI.Open += 
    new Microsoft.Office.Interop.Outlook.ItemEvents_10_OpenEventHandler(mcAI_Open); 

Но я не могу скомпилировать это я получаю сообщение об ошибке:

No overload for 'mcAI_Open' matches delegate 'Microsoft.Office.Interop.Outlook.ItemEvents_10_OpenEventHandler'

Любые идеи о том, как я должен зарегистрировать свою функцию для Open случае AppointmentItem? Заранее спасибо.

(КСТАТИ есть MSDN QA, который предлагает мой код должен работать, и все же я до сих пор застрял.)

ответ

5

Теоретически, это должно работать:

private void mcAI_Open(ref bool Cancel) 
{ 
    Cancel = true; 
} 
+0

Спасибо, да это действительно работает на практике тоже! Я думал, что попробовал параметр ref - думаю, нет. Я использовал параметр out, потому что я нашел что-то подобное в документации, но не могу найти его сейчас, чтобы проверить, конечно. – Marcin

Смежные вопросы