Je travaille sur un Outlook Addin lié au rendez-vous du calendrier. Mon problème est que j'ai besoin de sauvegarder le titre du rendez-vous initial et ensuite vérifier lors de l'enregistrement s'il a été mis à jour pour déclencher des actions supplémentaires. J'ai compris qu'il n'y a qu'une seule instance de l'Addin/Ribbon. J'ai d'abord utilisé une variable statique, mais cela n'aide pas car lorsque plusieurs fenêtres sont ouvertes, le titre est mélangé. Mes questions sont: 1) Où stocker les variables liées à un rendez-vous? 2) Comment détecter quel objet appelle les méthodes write/save/send /?VSTO Addin variable liée à l'article et l'identification de l'élément appelant
Voici un extrait pertinent de mon 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);
}
}
Toute aide sera très appréciée.
bien il semble que la bonne réponse sera de développer un wrapper: https://msdn.microsoft.com/fr-fr/library/ff973716(v=office.14).aspx Je ne sais toujours pas comment cela va aider. – Salim