我正在使用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 文件更新的。