如何替换 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;
}
查看以下文章了解更多信息:
背景
假设我有一个如下图所示的自定义任务窗格。
对于我的应用程序,我只在用户登录时显示此窗格(由 API 端点授予的有效会话令牌的存在决定),否则我显示登录窗格。
如果用户在会话超时时让检查器保持打开状态,我需要显示一个带有登录按钮的不同任务窗格。用户同时打开了许多检查器(因此,许多自定义任务窗格)。
我计划 运行 大约每小时一次在后台线程上使用递归方法来检查会话是否有效,如果无效,则交换登录时显示的任何自定义任务窗格窗格。
问题
如何在用户打开的每个检查器中完成“交换”?我应该迭代所有检查员吗?如果是这样,我如何访问该检查器中的自定义任务窗格集合。相反,如果我应该迭代 Globals.ThisAddIn.CustomTaskPanes
,我如何识别它所属的检查器,以便我可以将任何可见的自定义任务窗格与我的登录窗格交换?
提前致谢。
您需要保留一个字典,其中的键将是一个检查器对象。因此,您可以轻松访问自定义任务窗格。
InspectorWrapper inspectorWrapper = Globals.ThisAddIn.InspectorWrappers[inspector];
CustomTaskPane taskPane = inspectorWrapper.CustomTaskPane;
if (taskPane != null)
{
taskPane.Visible = false;
}
查看以下文章了解更多信息: