2009-05-02 76 views
3

我需要顯示一個自定義窗體而不是Outlook預約項目的默認檢查器窗體。我想在C#中做到這一點。VSTO - C#中的Outlook事件處理程序

關於devx有一個很好的教程,但它使用VB,我想使用C#。所以我把代碼翻譯成C#,我遇到了一個問題,我需要覆蓋AppointmentItemOpen事件處理程序(稱爲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; 
} 

(注意:我已經試過這有和沒有outref參數,並有/無的對象作爲第一個參數也是如此)

但是我們需要註冊,這是一個與事件,所以我把這個代碼:

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的任何想法?提前致謝。

(BTW有一個MSDN QA這表明我的代碼應該工作,但我仍然堅持。)

回答

5

從理論上講,這應該工作:

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

謝謝,是的,這確實工作在實踐中呢!我以爲我曾嘗試過一個參數 - 我猜不是。我使用了一個out參數,因爲我在文檔中發現了這種效果,但是當然現在找不到它來檢查。 – Marcin 2009-05-02 13:59:07