获取“无法分配'回复',因为在Outlook加载项中添加事件时方法组

时间:2013-08-05 16:21:18

标签: c# outlook outlook-addin outlook-2010

将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和帮助赞赏。谢谢!

1 个答案:

答案 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;
    }
}