VSTO:在显示非邮件项目时,通过Outlook收件箱进行迭代会引发错误

时间:2017-06-08 13:27:33

标签: vb.net outlook vsto

我在Visual Studio(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

1 个答案:

答案 0 :(得分:1)

可能性是将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