在共享日历上未触发ItemAdd事件

时间:2017-01-09 13:16:27

标签: c# outlook calendar vsto

我创建了一个vsto outlook插件。基本的想法是收听日历事件,当某些事件发生时,我们必须同步到另一个数据源。

所有内容都与用户自己的日历一致,但是一旦我们开始使用共享日历(交换),事件就不再被触发了。

我有以下代码,它是真实插件的精简版。

   CalendarModule calModule = (CalendarModule)this.Application.ActiveExplorer().NavigationPane.Modules.GetNavigationModule(OlNavigationModuleType.olModuleCalendar);
        string debug = string.Empty;
        foreach (NavigationGroup group in calModule.NavigationGroups)
        {
            for (int i = 1; i <= group.NavigationFolders.Count - 1; i++)
            {

                try
                {
                    NavigationFolder navFolder = group.NavigationFolders[i];
                    debug += navFolder.DisplayName + "\r";

                    Folder f = navFolder.Folder as Folder;
                    AddEventToAppointmentFolder(f);
                    debug += f.Name + "\r";
                    FolderList.Add(f);
                    Items items = f.Items;

                    debug += items.Count.ToString() + "\r";
                    AddEventsToAppointmentFolderItems(items);
                    FolderItemsList.Add(items);

                }
                catch (System.Exception ex)
                {
                    debug += "Error in Other foldergroup:\r" + ex.Message + "\r";
                }
            }
public void AddEventToAppointmentFolder(Folder f)
    {
        //f.BeforeItemMove += new MAPIFolderEvents_12_BeforeItemMoveEventHandler(AppointmentFolder_BeforeItemMove);
    }


    public void AddEventsToAppointmentFolderItems(Items i)
    {
        i.ItemAdd += new ItemsEvents_ItemAddEventHandler(CalendarFolderItemAdd);
        i.ItemChange += new ItemsEvents_ItemChangeEventHandler(appointments_ItemChange);
        //i.ItemRemove += new ItemsEvents_ItemRemoveEventHandler(appointments_ItemDelete);
    }

有没有任何线索/建议如何解决这个问题?

以下行会在共享日历中引发异常。

Folder f = NavigationFold.Folder as Folder;

"at Microsoft.Office.Interop.Outlook._NavigationFolder.get_Folder()
at OutlookAddIn1.Addin.GetSharedGroups()

此外,如果我们添加了具有委托权限的共享日历,并且已移入我的日历,那么它似乎也可以正常工作。但是,一旦日历处于一个单独的目录中,错误就会重新出现。

有任何想法如何解决这个问题?

此致

0 个答案:

没有答案