打开Outlook.Contact时,“COM目标未实现IDispatch”异常

时间:2015-07-14 18:18:39

标签: c# outlook

我的代码很简单:

using Outlook = Microsoft.Office.Interop.Outlook;

private Outlook.ContactItem contact;

private void OutlookButton_Click(object sender, RoutedEventArgs e)
{
    try 
    {
        contact = new Outlook.ContactItem((Outlook.ContactItem)((Button)sender).Tag);
        contact.Display();

Display()行引发了与IDispatch相关的异常:

  

System.Reflection.TargetInvocationException:COM目标没有   实现IDispatch。

有一个Outlook联系人对象绑定到按钮标记,并且想法是当单击该按钮时它将打开以显示它们。

Outlook(应用程序)未运行。以上工作第一次正常,但如果我第二次点击同一个按钮,则会引发上述异常。

如果尝试使用NetOffice,那会给我相同的结果。

1 个答案:

答案 0 :(得分:0)

您无法使用类ctor创建Outlook项目。相反,您需要使用Application类的CreateItemCreateItemFromTemplate方法。

还可以使用Items类的添加方法来创建新的Outlook项目。

很可能你需要更正代码:

contact = (Outlook.ContactItem)((Button)sender).Tag);
contact.Display();

无论如何,我建议将条目ID值存储在标签中。您可以在任何方便的时间使用Namespace类的GetItemFromID方法。