Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Outlook 2013加载项-约会打开事件处理程序-无法访问属性_C#_Outlook_Outlook Addin - Fatal编程技术网

C# Outlook 2013加载项-约会打开事件处理程序-无法访问属性

C# Outlook 2013加载项-约会打开事件处理程序-无法访问属性,c#,outlook,outlook-addin,C#,Outlook,Outlook Addin,我正在尝试创建Outlook 2013 AddIn,访问AppointmentItem的属性时遇到一些问题。之后,您会发现一个简短的示例代码: private void ThisAddIn_Startup(object sender, System.EventArgs e) { this.Application.ItemLoad += new Outlook.ApplicationEvents_11_ItemLoadEventHandler(Application

我正在尝试创建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; // <--------
    ...
问题是,我无法访问应用程序的属性,因为数据尚未用于内存:

: Outlook项目开始加载到内存时发生此事件。除Outlook项目的Class和MessageClass属性的值外,该项目的数据尚不可用,因此在为项目中返回的Outlook项目调用Class或MessageClass以外的任何属性时出错。类似地,如果尝试从Outlook项目调用任何方法,或者在项目中返回的Outlook项目上调用应用程序对象的GetObjectReference方法,则会发生错误

“我的加载项”的目的是在功能区栏中显示下拉框,其中显示的项目取决于主题的值和约会的某些其他属性。 那么,在eventhandler期间是否有方法访问约会的属性?或者有没有ohter eventhandler,我可以在约会加载时更改下拉框

谢谢和问候
Andi

有一个类似的问题,我发现在注册AppointmentItem.ReadComplete处理程序时仍然无法访问属性

不过,我确实在AppointItem方面取得了一些成功。在处理程序的方法中,我能够访问属性

我的代码如下所示:

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;
}

有一个类似的问题,我发现在注册AppointItem.ReadComplete处理程序时仍然无法访问属性

不过,我确实在AppointItem方面取得了一些成功。在处理程序的方法中,我能够访问属性

我的代码如下所示:

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;
}

只是一个猜测:尝试挂钩AppointItem.ReadComplete事件,属性应该在那里我尝试过,你的想法是,但是我如何获得当前约会?语句this.Application.ActiveInspector.CurrentItem作为Outlook.AppointmentItem;不起作用。如果更改示例并将AppointItem=Item的ReadComplete事件重新注册为Outlook.appointmentItem;只是一个猜测:尝试挂钩AppointItem.ReadComplete事件,属性应该在那里我尝试过,你的想法是,但是我如何获得当前约会?语句this.Application.ActiveInspector.CurrentItem作为Outlook.AppointmentItem;不起作用。如果更改示例并将AppointItem=Item的ReadComplete事件重新注册为Outlook.appointmentItem;