Я пишу Outlook Add -и хочу сделать что-то (, не относящееся к делу ), с данными о назначении после (, когда )оно было сохранено.
( я новичок в Outlook -Надстройки)
поэтому я обнаружил, что существует событие AfterWrite , где я могу зарегистрировать метод. И есть событие ItemLoad в Application .
так что мой первый Efford был примерно таким:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
//...
this.Application.ItemLoad +=
new Outlook.ApplicationEvents_11_ItemLoadEventHandler(atItemLoad);
}
public void atItemLoad(Object item)
{
Outlook.AppointmentItem aitem = item as Outlook.AppointmentItem;
if (aitem != null)
{
aitem.AfterWrite +=
new Outlook.ItemEvents_10_AfterWriteEventHandler(afterWrite);
}
}
public void afterWrite()
{
// Who was written?
MessageBox.Show("it was written!");
}
Проблема в том, что я не знаю, как получить данные о встрече, вызвавшей событие. Application.ItemLoad регистрирует функцию, которая получает объект, который можно привести к назначению .
AfterWrite нет. Я бы хотел что-то вроде этого:
public void afterWrite(Outlook.AppointmentItem aitem)
{
// do something with the data from the Appointment
MessageBox.Show(aitem.Subject + " was written!");
}
Я боюсь, что веду исследования в совершенно неправильном направлении..
*извините, если мой английский хромает -это не мой родной язык
редактировать:
я даже пробовал такую конструкцию:
private List<AppointmentEventHolder> holderList = new List<AppointmentEventHolder>();
internal class AppointmentEventHolder
{
private Outlook.AppointmentItem aitem = null;
public AppointmentEventHolder(Outlook.AppointmentItem item)
{
aitem = item;
}
public void onWrite()
{
MessageBox.Show("write: " + aitem.Subject);
}
}
public void atItemLoad(Object item)
{
Outlook.AppointmentItem aitem = item as Outlook.AppointmentItem;
if (aitem != null)
{
AppointmentEventHolder aHolder = new AppointmentEventHolder(aitem);
holderList.Add(aHolder);
aitem.AfterWrite += aHolder.onWrite;
}
}
но событие не запускается! я очень расстроен сейчас