Ich arbeite an einem Outlook-Addin im Zusammenhang mit Kalendertermin. Mein Problem ist, dass ich den ursprünglichen Termintitel speichern und dann überprüfen muss, wenn es aktualisiert wurde, um zusätzliche Aktionen auszulösen. Ich habe verstanden, dass es nur eine einzige Instanz des Addin/Ribbon gibt. Ich habe zunächst statische Variable verwendet, aber es hilft nicht, wenn mehrere Fenster geöffnet sind, dann Titel vermischt werden. Meine Fragen sind: 1) Wo Variablen zu einem Termin zu speichern? 2) Wie erkennt man, welches Objekt die write/save/send/Methoden aufgerufen hat?VSTO Addin Artikel verwandte Variable & Calling Item Identifikation
Hier ist ein entsprechender Auszug aus meinem Code:
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);
}
}
Jede mögliche Hilfe sehr geschätzt werden.
Nun scheint es, dass die richtige Antwort sein wird, einen Wrapper zu entwickeln: https://msdn.microsoft.com/en-us/library/ff973716(v=office.14).aspx Ich bin mir immer noch nicht sicher, wie das helfen wird. – Salim