Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;COM目标不实现IDispatch“;打开Outlook时出现异常。请与联系_C#_Outlook - Fatal编程技术网

C# &引用;COM目标不实现IDispatch“;打开Outlook时出现异常。请与联系

C# &引用;COM目标不实现IDispatch“;打开Outlook时出现异常。请与联系,c#,outlook,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)((But

我的代码很简单:

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联系人对象绑定到buttons标记,其想法是当单击按钮时,它将打开以显示它们

Outlook(应用程序)未运行。上面的第一次很好,但是如果我第二次点击同一个按钮,就会引发上面的异常


如果尝试使用
NetOffice
,则会得到相同的结果。

您无法使用类ctor创建Outlook项目。相反,您需要使用应用程序类的或方法

此外,Items类的Add方法可用于创建新的Outlook项目

很可能您需要更正代码:

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

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

您不能使用类ctor创建Outlook项。相反,您需要使用应用程序类的或方法

此外,Items类的Add方法可用于创建新的Outlook项目

很可能您需要更正代码:

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

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

我将代码修改为,以便在拉入所有联系人时,将联系人条目ID(字符串)和OutlookContact(Outlook.contact)添加到我的“OfficeContact”对象中。我有一个可以观察到的收藏。我还修改了代码,以便buttin的Tag属性绑定到EntryID。因此,现在当点击thr按钮时,我删除了可观察的集合,获得EntryID的匹配项,然后尝试显示()我的OfficeContact的Office.Contact对象-我最终出现了完全相同的错误。所以我觉得我更接近了…但是“Display()”仍然在折磨我。foreach(OfficeContact-aContact-in-main window.outlookContacts.officeContacts){if(aContact.OutlookContactEntryID==ourContactEntryID){aContact.OutlookContactObject.Display();}}我将代码修改为,这样当所有联系人都被拉入时,联系人条目ID(字符串)和OutlookContact(Outlook.contact)就会添加到我的“OfficeContact”对象中。我有一个可以观察到的收藏。我还修改了代码,以便buttin的Tag属性绑定到EntryID。因此,现在当点击thr按钮时,我删除了可观察的集合,获得EntryID的匹配项,然后尝试显示()我的OfficeContact的Office.Contact对象-我最终出现了完全相同的错误。所以我觉得我更接近了…但是“Display()”仍然在折磨我。foreach(OfficeContact-aContact-in-main window.outlookContacts.officeContacts){if(aContact.OutlookContactEntryID==ourContactEntryID){aContact.OutlookContactObject.Display();} }