【问题标题】:VSTO Outlook Addin Ribbons not loading properlyVSTO Outlook 插件功能区未正确加载
【发布时间】:2021-06-03 06:30:46
【问题描述】:

我目前正在修复 Outlook VSTO 插件。该项目包含 4 个功能区及其各自的功能区类型:

  • CrmAppointmentRibbon.cs -> 类型:Microsoft.Outlook.Appointment
  • CrmEmailNewRibbon.cs -> 类型:Microsoft.Outlook.Mail.Compose
  • CrmEmailReadRibbon.cs -> 类型:Microsoft.Outlook.Mail.Read
  • CrmEmailRibbon.cs -> 类型:Microsoft.Outlook.Mail.Explorer

所以当 Outlook 打开时,调用 ThisAddIn_Startup 方法来初始化插件,我得到的功能区集合如下:

ThisRibbonCollection ribbonCollection = Globals.Ribbons[Globals.ThisAddIn.Application.ActiveInspector()];

因此,ribbonCollection 包含 4 个功能区,但有关ribbonCollection 的CrmEmailRibbon 变量的类类型不匹配。当我这样做时

ribbonCollection.CrmEmailRibbon

它返回 CrmEmailReadRibbon 而不是 CrmEmailRibbon。所以 CrmEmailReadRibbon 被返回两次。这是从这两个调用返回的同一个功能区:

ribbonCollection.CrmEmailRibbon
ribbonCollection.CrmEmailReadRibbon

第一个调用应返回其关联的功能区引用:CrmEmailRibbon。 因此,我无法访问 CrmEmailRibbon 的组和按钮... 有人遇到过这种行为吗?

【问题讨论】:

    标签: c# outlook vsto outlook-addin


    【解决方案1】:

    通过运行以下代码:

    ThisRibbonCollection ribbonCollection = Globals.Ribbons[Globals.ThisAddIn.Application.ActiveInspector()];
    

    您将获得检查器窗口的功能区实例,它可以是以下之一:

    CrmAppointmentRibbon.cs -> Type: Microsoft.Outlook.Appointment
    CrmEmailNewRibbon.cs -> Type: Microsoft.Outlook.Mail.Compose
    CrmEmailReadRibbon.cs -> Type: Microsoft.Outlook.Mail.Read
    

    要获取功能区实例,您需要传递一个active explorer 实例:

    ThisRibbonCollection ribbonCollection = Globals.Ribbons[Globals.ThisAddIn.Application.ActiveExplorer()];
    

    对于以下实例:

    CrmEmailRibbon.cs -> Type: Microsoft.Outlook.Mail.Explorer
    

    根据上下文,您将获得适当的功能区实例。


    但我建议使用功能区回调而不是使用 VSTO 对象模型来处理功能区 UI(又名功能区 UI)。此外,VSTO 并未提供 Fluent UI 的所有功能。有时您必须使用功能区设计器创建基本 UI,然后将其导出到功能区 XML 文件,您可以在其中开始使用回调。

    正如我的同事所说,功能区用户界面从一开始就是静态的。唯一可能的动态是回调和菜单。因此,您可以比较这两种方法:

    【讨论】:

    • 感谢@Eugene,当我尝试使用ActiveExplorer 方法获取ribbonCollection 时,所有的功能区都返回为null...有什么想法吗?我已经仔细检查了功能区是否具有 Explorer 类型。
    • 在您尝试获取功能区实例时是否有任何资源管理器窗口可见?
    猜你喜欢
    • 2015-07-28
    • 2018-05-07
    • 2021-06-13
    • 1970-01-01
    • 2015-12-17
    • 2021-03-01
    • 2022-05-17
    • 1970-01-01
    • 2011-03-27
    相关资源
    最近更新 更多