我正在玩VSTO for Outlook 2007 在日历中访问约会时,我希望看到所有重复 - 不仅是系列主要项目。
我的代码如下
var calendarFolder = Globals.TestAddin.Application.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
var outlookCalendarItems = calendarFolder.Items;
outlookCalendarItems.IncludeRecurrences = includeRecurring;
var appointmentItems = outlookCalendarItems.Cast<AppointmentItem>();
foreach ( var appointmentItem in appointmentItems )
{
var item = appointmentItem;
this.LogBox.AppendText(item.Subject);
}
它显示所有正常项目,所有系列主项目但没有计算的系列约会 例如:它显示了我母亲在1949年10月的生日作为一个经常性的项目,但她没有一个生日在1950年,1951年......等等。
我做错了什么?
感谢您的想法!
的Sascha
答案 0 :(得分:2)
添加一行就可以了:
outlookCalendarItems.Sort("[Start]");
答案 1 :(得分:0)
当包含日期之间没有“查找”的重复时,此代码有可能成为永恒的循环。
这是因为它会为它可以找到的每个匹配项创建一个'appointmentItem'。如果有定期日历项目没有设置重复结束日期,则此循环将继续为每次出现创建'appointmentItem'(永远)。
要解决此问题,您需要限制找到的结果,请参阅下文如何限制结果。:
http://msdn.microsoft.com/en-us/library/office/dd469461(v=office.12).aspx
Set currentAppointment = myAppointments.Find("[Start] >= """ & _
tdystart & """ and [Start] <= """ & tdyend & """")