2009-05-02 23 views
3

Ich brauche ein benutzerdefiniertes Formular anstelle der Standard-Inspektor-Formular für einen Outlook-Termin anzuzeigen. Ich möchte das in C# machen.VSTO - Outlook-Event-Handler in C#

Es gibt ein gutes Tutorial auf devx, aber es verwendet VB, und ich möchte C# verwenden. Also habe ich den Code in C# übersetzt und ich habe ein Problem, wo ich die Open Event-Handler für die AppointmentItem (mcAI) überschreiben muss. In dem oben genannten tute, sagen sie folgendes in VB zu tun:

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

mir was übersetzt:

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

(Anmerkung ich dies mit und ohne out und ref Parameter versucht haben, und mit/ohne Objekt als erste param auch)

Allerdings müssen wir registrieren, dass dies ein mit dem Ereignis ist, also habe ich in diesem Code setzen:

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

Aber ich kann das nicht kompilieren, wie ich den Fehler:

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

Alle Ideen, wie soll ich meine Funktion für die Open Ereignis des AppointmentItem registrieren? Danke im Voraus.

(BTW gibt es eine MSDN QA, die meinen Code schlägt funktionieren sollte, und doch bin ich immer noch fest.)

Antwort

5

Theoretisch sollte diese Arbeit:

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

Danke, ja das funktioniert auch in der Praxis! Ich dachte, ich hätte einen Ref-Parameter ausprobiert - ich denke nicht. Ich habe einen out-Parameter verwendet, weil ich in der Dokumentation etwas gefunden habe, das ich jetzt nicht finden kann, um es zu überprüfen. – Marcin