启用/禁用基于邮件项目主题的功能区按钮 (Outlook VSTO)



我在使用非常简单的VSTO插件时遇到了一些麻烦。 我通过设计器添加了两个自定义功能区(Ribbon1 和 Ribbon2(,以便在两个内置功能区(Microsoft.Outlook.Mail.ReadMicrosoft.Outlook.Explorer(上创建自定义按钮。 我想根据所选邮件的主题设置功能区按钮的"启用"属性。 它在资源管理器窗口/功能区中运行良好,但我无法在检查器窗口中解决它。

问题是Outlook只生成一次检查器的功能区,因此当我在检查器窗口中打开另一封邮件时,我无法更改按钮的状态。我尝试了Invalidate((方法并将功能区XML与getEnabled一起使用,但没有成功。问题出在哪里?

namespace ApproveReport
{
public partial class ThisAddIn
{
// Explorer object
Outlook.Explorer ThisExplorer;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
// SelectionChange Event
ThisExplorer = Globals.ThisAddIn.Application.ActiveExplorer();
ThisExplorer.SelectionChange += new Outlook.ExplorerEvents_10_SelectionChangeEventHandler(ThisExplorer_SelectionChange);
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
// Empty
}
public void ThisExplorer_SelectionChange()
{
if(ThisExplorer.Selection.Count == 1)
{
Outlook.MailItem OriginalMessage = ThisExplorer.Selection[1];
if (OriginalMessage.Subject.Contains("Report"))
{
Globals.Ribbons.Ribbon1.buttonApproveReport.Enabled = true;
Globals.Ribbons.Ribbon2.buttonApproveReport.Enabled = true;
}
else
{
Globals.Ribbons.Ribbon1.buttonApproveReport.Enabled = false;
Globals.Ribbons.Ribbon2.buttonApproveReport.Enabled = false;
}
}
}
}
}

您的代码是什么使功能区无效?处理getEnabled回调的代码是什么?

当资源管理器的选择发生更改时,必须显式调用 Invalidate((。每次触发检查器中显示的项目Inspectors.NewInspector事件时,都必须执行相同的操作。

最新更新