Outlook VSTO Addin - 未保存NormalEmail.dotm

时间:2018-01-05 12:56:07

标签: vsto outlook-addin

我正在尝试为WindowSelectionChanged事件注册处理程序。它可以工作,但在退出Outlook时,它将放弃对NormalEmail.dotm文件的任何更改。

例如,对快速部件库(插入 - >文字 - > QuickParts)的任何更改只会在当前会话期间显示; 关闭Outlook并重新开始将显示上一个元素列表,即使它们已被删除,或者已添加新元素。

删除文件:

C:\ Users [USER] \ AppData \ Roaming \ Microsoft \ Templates \ NormalEmail.dotm

应该提示Outlook创建一个新的,但是在启用Addin时不会发生这种情况。

这可以通过向WindowSelectionChange事件注册一个空方法来重现:

public partial class ThisAddIn
{
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        this.Application.Inspectors.NewInspector += new Outlook.InspectorsEvents_NewInspectorEventHandler(RegisterChangeHandler);
    }

    void RegisterChangeHandler(Outlook.Inspector inspector)
    {
        Microsoft.Office.Interop.Word.Application app = Application.ActiveExplorer().ActiveInlineResponseWordEditor?.Application;
-->     app.WindowSelectionChange += WinSelectionChange; <-- this line causes the bug
    }

    private void WinSelectionChange(Selection Sel)
    {
      /* nothing */   
    }
    ...
}

这不会导致例外;将try / catch块放在适当的位置,或者在Application.Quit事件中取消注册回调时,结果是一样的。

问题:如何使Outlook能够提交NormalEmail.dotm文件,同时还可以为WindowSelectionChange事件注册回调?

(项目类型为“2013和2016 VSTO Addin”)

0 个答案:

没有答案