Outlook 2013 AddIn -约会打开事件处理程序-无法访问属性

本文关键字:程序 事件处理 访问 属性 2013 AddIn 约会 Outlook | 更新日期: 2023-09-27 18:03:15

我正在尝试创建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; // <--------
    ...

问题列表,我无法访问约会的属性,因为内存中还没有可用的数据:

MSDN: ApplicationEvents_11_Event。ItemLoad事件:当Outlook项目开始加载到内存中时,会发生此事件。除了Outlook项目的Class和MessageClass属性的值之外,项目的数据还不可用,因此在调用item中返回的Outlook项目的Class或MessageClass以外的任何属性时会发生错误。类似地,如果您试图从Outlook项目调用任何方法,或者如果您在item中返回的Outlook项目上调用Application对象的GetObjectReference方法,则会发生错误。

我的插件的目的是,在功能区栏中显示一个下拉框,其中显示的项目取决于约会的主题(和其他一些属性)的值。那么是否有一种方法可以在事件处理程序期间访问约会的属性呢?或者是否有其他的事件处理程序,我可以在加载约会时改变DropDownBox ?

谢谢你&问候安迪

Outlook 2013 AddIn -约会打开事件处理程序-无法访问属性

遇到类似的问题,我发现在注册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;
}