如何替换 Outlook (VSTO) 中的自定义任务窗格?

How do I replace a custom task pane in Outlook (VSTO)?

背景

假设我有一个如下图所示的自定义任务窗格。

对于我的应用程序,我只在用户登录时显示此窗格(由 API 端点授予的有效会话令牌的存在决定),否则我显示登录窗格。

如果用户在会话超时时让检查器保持打开状态,我需要显示一个带有登录按钮的不同任务窗格。用户同时打开了许多检查器(因此,许多自定义任务窗格)。

我计划 运行 大约每小时一次在后台线程上使用递归方法来检查会话是否有效,如果无效,则交换登录时显示的任何自定义任务窗格窗格。

问题

如何在用户打开的每个检查器中完成“交换”?我应该迭代所有检查员吗?如果是这样,我如何访问该检查器中的自定义任务窗格集合。相反,如果我应该迭代 Globals.ThisAddIn.CustomTaskPanes,我如何识别它所属的检查器,以便我可以将任何可见的自定义任务窗格与我的登录窗格交换?

提前致谢。

您需要保留一个字典,其中的键将是一个检查器对象。因此,您可以轻松访问自定义任务窗格。

       InspectorWrapper inspectorWrapper = Globals.ThisAddIn.InspectorWrappers[inspector];
        CustomTaskPane taskPane = inspectorWrapper.CustomTaskPane;
        if (taskPane != null)
        {
            taskPane.Visible = false;
        }

查看以下文章了解更多信息: