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 ?
谢谢你&问候安迪
遇到类似的问题,我发现在注册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;
}