使用VSTO加载项打开新文档-DocumentOpened无法触发

时间:2019-05-06 15:25:05

标签: c# vsto visio

我有一个Microsoft Visio加载项,应该关闭活动文档并在同一应用程序中打开另一个文档。 两者都可以正常工作,但是DocumentOpened处理程序无法识别新文件的打开(通过手动打开文件,效果很好)。

代码:

Visio.Application Vis = Globals.ThisAddIn.Application;
Visio.Document Doc = Vis.ActiveDocument;
Visio.Document new_Doc;

Doc.Save();
Doc.Close();

new_Doc = Vis.Documents.Open(new_filename);

有人知道为什么外接程序无法捕获事件以及如何解决此问题吗?

提前谢谢!

2 个答案:

答案 0 :(得分:0)

这是我想出的。您应该可以从e_Application_DocumentOpened触发代码。

public partial class ThisAddIn
{
    public static Visio.Application e_application;

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        e_application = this.Application;
        e_application.DocumentOpened += new Visio.EApplication_DocumentOpenedEventHandler(e_Application_DocumentOpened);
    }

    private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
    {
        e_application.DocumentOpened -= new Visio.EApplication_DocumentOpenedEventHandler(e_Application_DocumentOpened);
        e_application = null;
    }

    private void e_Application_DocumentOpened(Visio.IVDocument doc)
    {
        //whatever you need to do for this event
    }
}

答案 1 :(得分:0)

尝试以下操作:

Globals.ThisAddIn.Application.Documents.OpenEx(<yourFilePath>, (int)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenRW);

来自: microsoft doc