Problem for getting the source item with ItemRemoveEventHandler

  • Thread starter Thread starter Nico
  • Start date Start date
N

Nico

Hello

I have a problem for getting the Appointment Item that has been remove
because there is no parameter allowed in the method call after an
ItemsEvents_ItemRemoveEventHandler. With ItemsEvents_ItemAddEventHandler and
ItemsEvents_ItemChangeEventHandler event I can find the AppointItem that has
been change or modify but how to find it with a ItemRemoveEventHandler event
?


Here is my code :

public void test(){

_application = new Outlook.Application();
_nameSpace = _application.GetNamespace("MAPI");
_mfCalendar =
_nameSpace.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
ItemsEvents_ItemRemoveEventHandler iaehRemove =
new
ItemsEvents_ItemRemoveEventHandler(this.AppointmentItemRemove);
_itemsCalendar2.ItemRemove += iaehRemove;
}


public void AppointmentItemRemove()
{
// how to find here which Appointment item has been deleted ?
}

PS : I use Visual Studio 2005 with C#.

Thanks in advance
 
You'll need to add an ItemAdd handler to the Deleted Items folder to find
out which appointment was actually removed. Keep in mind that the
appointment's EntryID will have changed since it's in a new folder, so you
will need to use some other property to identify the item.

As you may know, Outlook 2003 SP2 made changes in the way calendar items are
handled (http://support.microsoft.com/?kbid=899919) From the article "The
new design works as follows. When a user accepts or tentatively accepts a
meeting, either from a meeting request or from a calendar item, the existing
calendar item is deleted from the calendar. Additionally, a duplicate of the
calendar item is created for the deleted item. Therefore, the new calendar
item has an Entry ID that is different from the Entry ID of the old calendar
item."

This means that your handlers may trap a delete and an add that are both for
the same appointment. The article describes how the Global Object ID
property is a more reliable way to track appointments. Unfortunately it's
not exposed by the Outlook object model, so you will need to use an Extended
MAPI library to get it.
 
Thanks for this clear answer !

Dave Kane said:
You'll need to add an ItemAdd handler to the Deleted Items folder to find
out which appointment was actually removed. Keep in mind that the
appointment's EntryID will have changed since it's in a new folder, so you
will need to use some other property to identify the item.

As you may know, Outlook 2003 SP2 made changes in the way calendar items
are handled (http://support.microsoft.com/?kbid=899919) From the article
"The new design works as follows. When a user accepts or tentatively
accepts a meeting, either from a meeting request or from a calendar item,
the existing calendar item is deleted from the calendar. Additionally, a
duplicate of the calendar item is created for the deleted item. Therefore,
the new calendar item has an Entry ID that is different from the Entry ID
of the old calendar item."

This means that your handlers may trap a delete and an add that are both
for the same appointment. The article describes how the Global Object ID
property is a more reliable way to track appointments. Unfortunately it's
not exposed by the Outlook object model, so you will need to use an
Extended MAPI library to get it.
 
Back
Top