Я занимаюсь разработкой визуальной студии VSTO, добавляю и отслеживаю измененные элементы событий для почты, контактов, задач и пунктов назначения. Это я сделал с помощью следующего
//subsrribe to task events
taskItems = Globals.ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderTasks).Items;
taskItems.ItemChange += new Outlook.ItemsEvents_ItemChangeEventHandler(TaskItems_ItemChange);
taskItems.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(TaskItems_ItemAdd);
appointmentItems = Globals.ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderCalendar).Items;
appointmentItems.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(appointmentItems_ItemAdd);
//Added back as itemchanged requested
appointmentItems.ItemChange += new Outlook.ItemsEvents_ItemChangeEventHandler(appointmentItems_ItemChange);
contacts = Globals.ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts).Items;
contacts.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(contacts_ItemAdd);
contacts.ItemChange += new Outlook.ItemsEvents_ItemChangeEventHandler(contacts_ItemChange);
Мне нужно иметь возможность сохранить предыдущее состояние измененного элемента, но в описанных выше обработчиках событий все, что я получаю, это элемент, который изменился. В идеале мне требуется событие перед изменением элемента или, в качестве альтернативы, способ отслеживания элемента, который пользователь выбирает в outlook, а затем сохранение требуемого состояния свойства (например, категории), после чего я могу получить к нему доступ в измененном обработчике события. .