首页 > 解决方案 > VSTO Outlook 加载项:如何检查在重复窗口中标记了哪个单选按钮?

问题描述

我有一个 VSTO Outlook 加载项,我需要收集所有日历和任务项目及其所有属性。这没关系,但是当我使用 RecurrencePattern 时问题就来了。它工作得很好,并且返回了我需要的几乎所有属性,除了一个。

在“重复范围”表格中,用户可以在选择树单选按钮时选择继续其任务的时间。

RecurrencePattern 仅对第一个具有布尔属性 - 没有结束日期。

当第一个收音机未标记时,我需要了解第二个或第三个收音机中的哪一个被标记,但 RecurrencePattern 没有它们的属性。它返回出现次数和结束日期,但我需要选中的单选按钮。

我想知道我是否可以在这些单选按钮上有一个事件,或者我可以以其他方式获取它们的布尔属性,但我找不到任何相关信息。

我不使用 Ribbon 或其他形式,在这种情况下我不需要使用它。

我的 Outlook 是 2016 年,.net 框架是 4.6.1。

感谢您的帮助!

标签: c#.netoutlook-addin

解决方案


由于某些莫名其妙的原因,Outlook 对象模型不会公开该信息。您可以自己解析重复模式 blob(其格式已记录,但解析起来并不有趣),也可以使用Redemption及其RDORecurrencePatternPatternEndKind财产。假设在 Outlook 中选择了定期约会:

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set appt = Session.GetMessageFromID(Application.ActiveExplorer.Selection(1).EntryID)
  strPattern = "Not recurring"
  if appt.IsRecurring Then
    set pattern = appt.GetRecurrencePattern
    select case pattern.PatternEndKind
      case 0 strPattern = "No end date"  'rekNoEndDate
      case 1 strPattern = "End after X occurrences"  'rekEndAfterOccurrences
      case 2 strPattern = "End by date"  'rekEndByDate
    end select
  End If
  MsgBox strPattern

推荐阅读