Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.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
Vb.net VSTO:当出现非邮件项目时,遍历Outlook收件箱会引发错误_Vb.net_Outlook_Vsto - Fatal编程技术网

Vb.net VSTO:当出现非邮件项目时,遍历Outlook收件箱会引发错误

Vb.net VSTO:当出现非邮件项目时,遍历Outlook收件箱会引发错误,vb.net,outlook,vsto,Vb.net,Outlook,Vsto,我在visualstudio(VSTO+VB.Net)中有一些代码,可以迭代我的Outlook收件箱中的所有项目。在我的收件箱中出现其他项目(如约会等)之前,代码工作正常 下面的代码经过简化,并遍历排序列表中的所有项。当FolderItem(MailItem类型)与其他类型的项目(例如MeetingItemClass)一起分配时,会出现此问题。提出了一个例外 我明白为什么。。。但我需要一个如何找到解决办法的解决方案。我想处理所有项目,甚至会议项目 Dim InboxFolder As Outlo

我在visualstudio(VSTO+VB.Net)中有一些代码,可以迭代我的Outlook收件箱中的所有项目。在我的收件箱中出现其他项目(如约会等)之前,代码工作正常

下面的代码经过简化,并遍历排序列表中的所有项。当FolderItem(MailItem类型)与其他类型的项目(例如MeetingItemClass)一起分配时,会出现此问题。提出了一个例外

我明白为什么。。。但我需要一个如何找到解决办法的解决方案。我想处理所有项目,甚至会议项目

Dim InboxFolder As Outlook.MAPIFolder
Dim FolderItem As Outlook.MailItem
Dim FolderItems As Outlook.Items
Dim ItemNo As Integer

*** removed code that finds the inbox object 'InboxFolder' ***

ItemNo = 1
FolderItems = InboxFolder.Items
FolderItems.Sort("[ReceivedTime]", True)

Do While ItemNo <= FolderItems.Count
    FolderItem = FolderItems(ItemNo)

    *** Do some operations on each inbox-object here ***

    ItemNo = ItemNo + 1
Loop
Dim InboxFolder作为Outlook.MAPIFolder
将FolderItem设置为Outlook.MailItem
将文件夹项设置为Outlook.Items
Dim ItemNo作为整数
***已删除查找收件箱对象“InboxFolder”的代码***
ItemNo=1
FolderItems=InboxFolder.Items
排序(“[ReceivedTime]”,True)

Do While ItemNo一种可能性是将FolderItem定义为Object,然后

  • …在将类型分配给特定类型的变量之前,请先检查该类型

  • …如有必要,将其强制转换为while循环中的特定类型
类似于此(未经测试):

If TypeOf FolderItem Is MailItem Then
   Dim mailItm As MailItem = DirectCast(FolderItem, MailItem)
   'Do something
ElseIf TypeOf FolderItem Is MeetingItem Then
   Dim meetItm As MeetingItem = DirectCast(FolderItem, MeetingItem)
   'Do something
End If