2017-10-17 142 views
0

我正在使用與日曆約會相關的Outlook Addin。我的問題是,我需要保存初始約會標題,然後檢查保存時間是否更新以觸發其他操作。我明白只有一個插件/功能區的實例。我最初使用靜態變量,但它沒有幫助,因爲當打開多個窗口,然後標題混淆。我的問題是: 1)哪裏存儲與約會相關的變量? 2)如何檢測哪個對象一直在調用write/save/send/methods?VSTO Addin項目相關的變量和呼叫項目標識

這裏是我的代碼相關的摘錄:

public partial class ThisAddIn 
{ 

    public static Outlook.AppointmentItem appointmentItem; 
    public static Addin_Ribbon ribbon; 
    Outlook.Inspectors inspectors; 

// Needs to be saved for each appointments 
public static string initialMeetingSubject = ""; 

    private void ThisAddIn_Startup(object sender, System.EventArgs e) 
    { 
     inspectors = this.Application.Inspectors; 
     inspectors.NewInspector += 
     new Microsoft.Office.Interop.Outlook.InspectorsEvents_NewInspectorEventHandler(Inspectors_NewInspector); 
    } 

    protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject() 
    { 
     ribbon = new MyAddin_Ribbon(); 
     return ribbon; 
    } 

    void Inspectors_NewInspector(Microsoft.Office.Interop.Outlook.Inspector Inspector) 
    { 
     // Save current appointment reference 
     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; 

      // Save initial value to compare during appointment save 
      ThisAddIn.initialMeetingSubject = appointmentItem.Subject; 

     } 
    } 

    private void _appointment_Write(ref bool Cancel) 
    { 
     Logger.WriteLine(LogLevel.Debug, "Appointment WRITE Initial Subject: " +initialMeetingSubject + 「 Updated Subject: 「 + ThisAddIn.appointmentItem.Subject); 
    } 
} 

任何援助將非常感激。

+0

好吧,似乎正確的答案將是開發一個包裝:https://msdn.microsoft.com/en-us/library/ff973716(v=office.14).aspx我仍然不確定這將如何幫助。 – Salim

回答

0

好吧我在之前的評論中發佈的微軟教程其實非常清晰和高效。按照說明,我爲約會項目創建了一個包裝類,它的功能就像一個魅力。一個測試項目可以下載here