2017-09-02 38 views
0

我正在使用Outlook插件,我尝试执行特定操作(如果删除)。它对所有我已经打开过的约会都可以正常工作。当约会被创建或从日历中删除而未被打开时,首先没有事件(BeforeDelete,Write)被触发。VSTO Addin Outlook约会删除和写入事件只有打开后才会触发

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
{ 
    inspectors = this.Application.Inspectors; 
    inspectors.NewInspector += 
    new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector); 
} 
void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) 
{ 
    appointmentItem = Inspector.CurrentItem as Outlook.AppointmentItem; 
    if (appointmentItem != null) 
    { 
     (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).Send += _appointment_Send; 
     (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).BeforeDelete += _appointment_Delete; 
     (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).Write += _appointment_Write;  
     (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).Open += _appointment_Open; 
     (appointmentItem as Microsoft.Office.Interop.Outlook.ItemEvents_10_Event).Close += _appointment_Close; 
    } 
} 

我假设的解释就在于检查员仅在任命是开放的连接和路径,遵循的是更多的东西一样描述here,但我不知道。上述代码的作用就像是一种魅力,除非在约会被删除或创建之前未打开的具体情况例外。

任何指导将不胜感激。

回答

1

是的,BeforeWrite不会触发。如果我在Outlook中选择约会并使用OutlookSpy查看OOM触发的事件(选择约会,单击项目按钮,转到事件选项卡并查看页面底部的日志,修改约会内联),I只能看到以下事件发生。

BeforeDelete按预期在预约被删除时触发。

PropertyChange (ConversationIndex) 
PropertyChange (Subject) 
PropertyChange (Start) 
PropertyChange (StartInStartTimeZone) 
PropertyChange (StartUTC) 
PropertyChange (End) 
PropertyChange (EndInEndTimeZone) 
PropertyChange (EndUTC) 
PropertyChange (Duration) 
PropertyChange (AllDayEvent) 
PropertyChange (StartInStartTimeZone) 
PropertyChange (StartUTC) 
PropertyChange (End) 
PropertyChange (EndInEndTimeZone) 
PropertyChange (EndUTC) 
PropertyChange (Start) 
PropertyChange (EndInEndTimeZone) 
PropertyChange (EndUTC) 
PropertyChange (Duration) 
PropertyChange (End) 
PropertyChange (MeetingStatus) 
Write (false) 
BeforeCheckNames (false) 
AfterWrite() 
<Unknown(DispID=0x0000FC95)> (false) 
+0

+1对于我不知道的OutlookSpy。奇怪的是,写事件如果被解雇,因此应该是我可以捕获的东西。不幸的是,它不会发生。这可能是由于检查员检查currentItem是否来自Outlook约会类型。在没有打开的情况下进行编辑时,我认为该值为空。 – Salim

相关问题