得到";无法分配给';回复';因为在outlook外接程序中添加事件时方法组
本文关键字:程序 添加 方法 事件 因为 quot 分配 得到 回复 outlook | 更新日期: 2023-09-27 18:26:33
使用VSTO 2012和Outlook 2010 PIA(即版本12),我正试图将回复事件挂接到消息上;但是得到了一个编译错误,我正在将其分配给一个方法组。我在网上看到过一些其他代码使用下面的强制转换方法,但它不会为我编译。类型库中的definitionion似乎缺少"event"关键字,这可能是问题所在,但我不清楚如何解决。
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;
//..
}
}
感谢您的建议和帮助。谢谢
这就是问题所在:
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;
}
}