Outlook 2013 VSTO - 获取日历选择范围+回调

Outlook 2013 VSTO - Get calendar selected range + callback

如何检索 Outlook 日历中显示的日期范围?比如我打开当前周的周视图,需要在代码中知道当前日历显示的范围是2015-09-21到2015-09-27。

假设我将日历作为 MAPIFolder 对象引用。我发现这个对象有一个 CurrentView 成员,它有几个有前途的属性。但是 DisplayedDates 不包含任何项目,Filter 是空的并且 SelectedEndTime / SelectedStartTime 都指向 4501-01-01,即没有设置日期。那我做错了什么?是的,在评估此对象时,Outlook 中的日历视图处于打开状态。

第二个问题:获取到当前显示范围后,是否有回调或事件可以在显示范围变化时触发?

尝试使用CurrentView property of the Explorer class, not folder. To obtain a View object for the view of the current Explorer,使用Explorer.CurrentView代替Explorer.CurrentFolder返回的当前Folder对象的CurrentView属性。

这是 MSDN 的声明:

View 对象允许您创建可自定义的视图,使您能够更好地排序、分组并最终查看所有不同类型的数据。有多种不同的视图类型可以提供创建和维护重要数据所需的灵活性。

  • table 视图类型 (olTableView) 允许您以简单的基于字段的方式查看数据 table。
  • 日历视图类型 (olCalendarView) 允许您以日历格式查看数据。
  • 卡片视图类型(olCardView)允许您查看一系列卡片中的数据。每张卡片显示物品包含的信息,并可以排序。
  • 图标视图类型 (olIconView) 允许您以图标形式查看数据,类似于 Windows 文件夹或资源管理器。
  • 时间线视图类型 (olTimelineView) 允许您在可自定义的线性时间线中查看接收到的数据。

视图是使用视图对象的 XML 属性 定义和自定义的。 XML 属性 允许您创建和设置自定义的 XML 架构,该架构定义了视图的各种功能。

After it is possible to get the current display range, is there a callback or event which I can consume that is fired when the display range changes?

不,Outlook 对象模型不提供此类事件。但是,您可以尝试处理资源管理器 class 的 BeforeViewSwitch 事件,该事件在资源管理器更改为新视图之前触发,无论是由于用户操作还是通过程序代码。