Visual Studio 2015.Outlook 2016。
我想编写一个插件,在阅读窗格或检查器中查看电子邮件时,用超链接替换某些形式的文本。
我可以订阅ItemLoad事件:
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
this.Application.ItemLoad += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_ItemLoadEventHandler(OnItemLoad);
}
private void OnItemLoad(object item)
{
Outlook.MailItem mailItem = item as Outlook.MailItem;
if (mailItem != null)
{
System.Diagnostics.Debug.WriteLine("OnItemLoad: " + mailItem.Subject);
}
}
但是当它由于某种原因被解雇时,我无法访问Outlook.MailItem实例上的任何内容。我得到以下异常:
“System.Runtime.InteropServices.COMException”类型的异常 发生在FirstOutlookAddIn.dll但未在用户代码中处理
附加信息:项目的属性和方法不能 在此事件过程中使用。
提前致谢!
答案 0 :(得分:2)
该错误消息非常明确 - 在某些事件处理程序中无法访问OOM属性或方法。
一种解决方法是等到你离开事件处理程序 - 使用不同的事件(如果可用),或者在OOM事件处理程序中启用计时器,然后在计时器事件处理程序中执行你需要做的事情(在它触发时你将离开OOM事件处理程序)。使用Forms命名空间中的Timer类,因为它在主线程上触发。
请记住,修改现有项目并不是一个好主意 - 更改将保持不变(也可以更新上次修改日期),或者Outlook将提示用户保存更改。
尝试使用通过Inspector.GetWordEditor
公开的Word编辑器。对于阅读窗格,您可以使用ReadingPane中的Redemption对象。