我正在尝试创建Outlook 2013 AddIn,我在访问AppointmentItem的属性时遇到了一些麻烦。之后,您会找到一个缩短的示例代码:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.ItemLoad += new Outlook.ApplicationEvents_11_ItemLoadEventHandler(Application_ItemLoad);
}
void Application_ItemLoad(object Item)
{
if (Item is Outlook.AppointmentItem)
{
try
{
appointmentItem = Item as Outlook.AppointmentItem;
string sub = appointmentItem.Subject; // <--------
...
问题是,我无法访问appintment的属性,因为数据尚不可用于内存:
MSDN: ApplicationEvents_11_Event.ItemLoad event: Outlook项目开始加载到内存时发生此事件。除了Outlook项的Class和MessageClass属性的值之外,该项的数据尚不可用,因此在为Item中返回的Outlook项调用Class或MessageClass以外的任何属性时会发生错误。同样,如果您尝试从Outlook项目中调用任何方法,或者在Item中返回的Outlook项目上调用Application对象的GetObjectReference方法,则会发生错误。
我的AddIn背后的目标是,在功能区栏中显示DropDownBox,其中显示的项目取决于约会的主题(以及其他一些属性)的值。 那么有没有办法在事件处理程序期间访问约会的属性?或者是否有任何ohter eventhandler我可以在Appointment获得loadad时更改DropDownBox?
谢谢你&amp;问候 岸堤
答案 0 :(得分:0)
有一个类似的问题,我发现注册AppointmentItem.ReadComplete
处理程序时仍然无法访问属性。
但是我在AppointmentItem.Read
处理程序上确实取得了一些成功。在处理程序的方法内部,我可以访问属性。
我的代码如下:
private Outlook.AppointmentItem _item;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.ItemLoad +=
new Outlook.ApplicationEvents_11_ItemLoadEventHandler(Application_ItemLoad);
}
private void Application_ItemLoad(object item)
{
if (item is Outlook.AppointmentItem)
{
this._item = item as Outlook.AppointmentItem;
this._item.Read += _item_Read;
}
}
private void _item_read()
{
// Example access of Recipients property
var recipients = this._item.Recipients;
}