D
David
I am trying to handle the ItemAdd event on a number of folders under my default mailbox in Outlook.
I find the Event fires for a while and then stops. Can anyone help explain why?
The following code is in from a VSTO SE AddIn.
1) I find a folder which I will handle the AddItem event for.
2) Call SetEventHandler which registers the event handler
3) Adds the a folder to a class level collection of folders
(Step 3 is to try an ensure the folder doesn't drop out of scope and get garbage collected)
4) Call SetEventHandler for each sub folder
private static SortedDictionary<String, Outlook.MAPIFolder> m_ItemAddHandled
= new SortedDictionary<string, Outlook.MAPIFolder>();
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Outlook.MAPIFolder myRootFolder = FindFolder(...);
if (colligoRootFolder != null)
{
SetEventHandler(myRootFolder);
}
}
private void SetEventHandler(Outlook.MAPIFolder parent)
{
System.Diagnostics.Debug.Print("SetEventHandler(" + parent.FullFolderPath + ")");
parent.Items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd);
m_ItemAddHandled.Add(parent.FullFolderPath, parent);
foreach (Outlook.MAPIFolder folder in parent.Folders)
{
SetEventHandler(folder);
}
}
void Items_ItemAdd(object Item)
{
MessageBox.Show("Items_ItemAdd");
}
I find the Event fires for a while and then stops. Can anyone help explain why?
The following code is in from a VSTO SE AddIn.
1) I find a folder which I will handle the AddItem event for.
2) Call SetEventHandler which registers the event handler
3) Adds the a folder to a class level collection of folders
(Step 3 is to try an ensure the folder doesn't drop out of scope and get garbage collected)
4) Call SetEventHandler for each sub folder
private static SortedDictionary<String, Outlook.MAPIFolder> m_ItemAddHandled
= new SortedDictionary<string, Outlook.MAPIFolder>();
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Outlook.MAPIFolder myRootFolder = FindFolder(...);
if (colligoRootFolder != null)
{
SetEventHandler(myRootFolder);
}
}
private void SetEventHandler(Outlook.MAPIFolder parent)
{
System.Diagnostics.Debug.Print("SetEventHandler(" + parent.FullFolderPath + ")");
parent.Items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd);
m_ItemAddHandled.Add(parent.FullFolderPath, parent);
foreach (Outlook.MAPIFolder folder in parent.Folders)
{
SetEventHandler(folder);
}
}
void Items_ItemAdd(object Item)
{
MessageBox.Show("Items_ItemAdd");
}