处理约会拖放,日历上的主题更改以及通过Outlook中的ICS文件进行更改



我正在使用NetOffice库开发一个Outlook AddIn,但我想VSTO的问题与此类似。

我想在 Outlook 中处理有关约会的以下事件:

  • 用户拖放约会以更改应用程序日期
  • 用户双击约会主题并直接在日历上编辑它
  • 用户通过电子邮件获取ICS文件,该文件更新约会中的一些数据

所以这很容易:

        var exp = App.Session.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
        (exp.Items as Items).ItemChangeEvent += Addin_ItemChangeEvent;

所以现在在我需要的每个情况下,我的事件处理程序都会启动。但是,问题是,我需要认识到,约会的更改是由于用户对日历或收到的ICS文件的操作。

我真的坚持那个,有什么提示吗?

你可以为此使用标记。我试图解释我的解决方案。在每个 Outlook 项目(可以是 AppointmentItem 和 MailItem)中,您都有一个属性UserProperties,您可以像string public const string ICSMark = "ICSMark"一样创建标记变量,并使用此标记appointmentItem.UserProperties.Add(ICSMark, OlUserPropertyType.olText);添加新的用户属性。当您事件发生时,您可以检查您的项目是否有此标记UserProperty mark = appointmentItem.UserProperties.Find(ICSMark);,如果标记不为空,则它是从 ICS 文件更新的。

最新更新