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



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

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

第二个问题:在有可能获得当前显示范围之后,当显示范围发生变化时,是否有一个我可以使用的回调或事件?

尝试使用资源管理器类的CurrentView属性,而不是文件夹。要获取当前资源管理器视图的视图对象,请使用资源管理器。CurrentView,而不是Explorer.CurrentFolder返回的当前文件夹对象的CurrentView属性。

MSDN的声明如下:

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

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

视图是使用View对象的XML属性来定义和定制的。XML属性允许您创建和设置自定义的XML模式,该模式定义视图的各种特性。

在可以获得当前显示范围之后,是否有一个回调或事件,当显示范围发生变化时,我可以使用它?

不,Outlook对象模型不提供此类事件。然而,你可以尝试处理资源管理器类的BeforeViewSwitch事件,该事件在资源管理器更改为新视图之前触发,可能是用户操作的结果,也可能是通过程序代码触发的。

最新更新