将VSTO 2012与Outlook 2010 PIA(即版本12)一起使用,我试图将回复事件挂钩到消息上;但得到我分配给方法组的编译错误。我在Web上看到了一些使用下面的转换方法的其他代码,但它不会为我编译。类型lib中的定义似乎缺少可能是问题的“事件”关键字,但我不清楚如何解决。
using Outlook = Microsoft.Office.Interop.Outlook;
...
void Application_ItemLoad(object Item)
{
if (Item is Outlook.MailItem)
{
Outlook.MailItem mi = Item as Outlook.MailItem;
Outlook.MailItemClass emi = Item as Outlook.MailItemClass;
emi +=new Microsoft.Office.Interop.Outlook.ItemEvents_10_ReplyEventHandler(MyReply);
}
}
private void MyReply(object Response, ref bool Cancel)
{
if (Response is Outlook.MailItem)
{
Outlook.MailItem re = Response as Outlook.MailItem;
//..
}
}
sugestions和帮助赞赏。谢谢!
答案 0 :(得分:1)
这是问题所在:
emi +=new Microsoft.Office.Interop.Outlook.ItemEvents_10_ReplyEventHandler(MyReply);
目前,您正在尝试向对象本身添加事件 - 而不是特定事件。您需要ItemEvents_Event_Reply
事件(我怀疑),在这种情况下您需要:
emiItemEvents_Event_Reply += MyReply;
(使用简单的方法组转换而不是显式创建新的处理程序。即使您确实想使用new ...(MyReply)
语法,一些选择using
指令也会使您的代码更具可读性。)
编辑:好的,您可以改为使用MailItem.Reply
事件:
void Application_ItemLoad(object item)
{
var mailItem = item as Outlook.MailItem;
if (mailItem != null)
{
mailItem.Reply += MyReply;
}
}