我在Outlook中创建了一个名为时间跟踪的个人日历以及我的正常交换日历。我为一个简单的Outlook AddIn创建了一个表单区域。我希望表单区域仅在约会来自时间跟踪日历时显示。以下是两个日历的屏幕截图。
我希望仅在来自我的时间跟踪日历时显示表单区域。
我试过这段代码:
public partial class TimeTrackingRegionFactory
{
// Occurs before the form region is initialized.
// To prevent the form region from appearing, set e.Cancel to true.
// Use e.OutlookItem to get a reference to the current Outlook item.
private void TimeTrackingRegionFactory_FormRegionInitializing(object sender, Microsoft.Office.Tools.Outlook.FormRegionInitializingEventArgs e)
{
var appt = e.OutlookItem as AppointmentItem;
if (appt != null)
e.Cancel =
!(appt.Parent as Microsoft.Office.Interop.Outlook.MAPIFolder).Name.Equals(
Constants.TIME_TRACKING_CALENDAR);
}
}
但是,我发现两者的日历名称都是“日历”。我看到了这个question,但我检查了StoreID和Store属性看起来都一样。
如果我保存约会然后重新打开,它会说明约会来自时间跟踪日历,然后从上面的代码中正确显示表单区域。
就像所有约会似乎默认为日历而不是时间跟踪日历,即使我正在尝试从那里创建一个直到它被保存。
有没有办法找出保存约会项目的日历?
谢谢,Bill N
答案 0 :(得分:0)
查看appt.Parent属性 - 它将返回父MAPIFolder对象。
答案 1 :(得分:0)
Dmitry Suggestion Works:
var outlook = new Microsoft.Office.Interop.Outlook.Application();
e.Cancel = !(outlook.Application.ActiveExplorer().CurrentFolder).Name.Equals(
Constants.TIME_TRACKING_CALENDAR);