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

时间:2015-09-21 10:57:17

标签: .net calendar outlook vsto outlook-addin

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

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

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

1 个答案:

答案 0 :(得分:1)

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

以下是MSDN所述的内容:

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

  • 表视图类型(olTableView)允许您在简单的基于字段的表中查看数据。
  • 日历视图类型(olCalendarView)允许您以日历格式查看数据。
  • 卡片视图类型(olCardView)允许您查看一系列卡片中的数据。每张卡片都会显示该项目所包含的信息,并且可以进行分类。
  • 图标视图类型(olIconView)允许您将数据视为图标,类似于Windows文件夹或资源管理器。
  • 时间轴视图类型(olTimelineView)允许您在可自定义的线性时间线中查看数据。

使用View对象的XML属性定义和自定义视图。 XML属性允许您创建和设置定义视图的各种功能的自定义XML模式。

  

在可以获得当前显示范围之后,是否存在我可以消耗的回调或事件,当显示范围发生变化时会触发该回调或事件?

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