【发布时间】:2011-11-03 14:35:29
【问题描述】:
我正在尝试用 Application.ItemLoad 事件挂钩一个方法:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.ItemLoad += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemLoadEventHandler(Application_ItemLoad);
}
这将检查当前项目是否为 ContactItem。如果它是一个 ContactItem,它将检查属性 ContactItem.User4 是否包含值 xxx。如果 ContactItem.User4 包含值 xxx,它将使用 ContactItem.Write 事件挂钩另一个方法:
void Application_ItemLoad(object Item)
{
if (Item is Outlook.ContactItem)
{
Outlook.ContactItem contact = (Outlook.ContactItem)Item;
System.Windows.Forms.MessageBox.Show("A new contact is loaded into memory");
try
{
string user4 = contact.User4;
bool isSynchronized = user4 != null && user4.Contains("xxx");
if (isSynchronized)
{
contact.Write += propertyChangeHandler;
}
}
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show("An error occurred: "+e);
}
}
}
现在的问题是,每当我尝试访问 ContactItem.User4 属性时,都会出现异常:
System.Runtime.InteropServices.COMException:项目的属性和 方法不能在此事件过程中使用。
没有出现上述错误该怎么办?
感谢您阅读我的长问题并期待您的建议。
【问题讨论】:
标签: c# vsto outlook-2007