0

在我的 Outlook 加载项中,我希望能够为具有以下条件的约会过滤我的默认日历:

  1. 全天事件 = 真
  2. 提醒设置 = true

我已经想出了如何使用 DASL 来搜索这些项目,但是如何让日历视图显示那些过滤后的结果呢?

这是我到目前为止的代码:

internal class MyAppointment : Appointment
{
    [OutlookItemProperty("urn:schemas:calendar:dtstart")]
    public DateTime Start { get { return Item.Start; } }

    [OutlookItemProperty("urn:schemas:calendar:dtend")]
    public DateTime End { get { return Item.End; } }

    public bool ReminderSet { get { return Item.ReminderSet; } }

    public bool AllDayEvent { get { return Item.AllDayEvent; } }
}


void btnFix_Click(Microsoft.Office.Core.CommandBarButton Ctrl, ref bool CancelDefault)
{
    Outlook.Folder folder = (Outlook.Folder)Globals.ThisAddIn.Application.Session.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar);

    var appts = from item in folder.Items.AsQueryable<MyAppointment>()
                where item.Start >= DateTime.Now
                && item.End <= DateTime.Now.AddMonths(1)
                && item.ReminderSet
                && item.AllDayEvent
                select item.Item;

    // bind to Calendar view???
}

我现在有一个约会集合。我如何让日历显示他们?

4

1 回答 1

1

任何人都需要它的答案:。

  1. 将查询构建为字符串过滤器。
  2. 将其作为过滤器应用到日历文件夹。

    Outlook.CalendarView 视图 = (Outlook.CalendarView)Application.ActiveExplorer().CurrentView; 过滤器=“\”瓮:模式:日历:alldayevent\“= 1和\” http://schemas.microsoft.com/mapi/id/ {00062008-0000-0000-C000-000000000046}/8503000b\”= 1 ";

    view.Filter = 过滤器;视图.应用();

于 2009-09-04T11:19:30.600 回答