如何在visio文件中动态添加模具(C#)

如何在visio文件中动态添加模具(C#),c#,interop,visio,C#,Interop,Visio,我有一个Visio文档和一个模具(.vss)文件。要求:在Visio文档中动态添加此模具文件 private static void InsertStencilsToVisio() { string fileName = @"C:\Visio Files\TestVisio.vdw"; if (System.IO.File.Exists(fileName)) { visioDocumen

我有一个Visio文档和一个模具(.vss)文件。要求:在Visio文档中动态添加此模具文件

    private static void InsertStencilsToVisio()
    {           
        string fileName = @"C:\Visio Files\TestVisio.vdw";
        if (System.IO.File.Exists(fileName))
        {
            visioDocument = visioApplication.Documents.Open(fileName);
            visioPage = visioApplication.Window.Application.ActivePage;
            eswStencilDocument = visioPage.Application.Documents["eswstencil.vss"];
            CreateShapes();
        }
    }

我可以使用VisOpenSaveArgs吗?要破解此问题。

是的,您可以使用visOpenRO+visOpenDocked:

visioDocument = visioApplication.Documents.Open(fileName);

visioApplication.Documents.OpenEx("eswstencil.vss", 
    (short)VisOpenSaveArgs.visOpenRO|(short)VisOpenSaveArgs.visOpenDocked);

我自己破解的。在这篇文章中,我打开了Visio文档,并在打开它的同时动态地将模板停靠到Visio。稍后,文档将使用模具保存

   private static void InsertStencilsToVisio()
   {   visioApplication = new Application();
        string fileName = @"C:\siva\CreateGen1Visio\pd-m-0001_1.11.vdw";
        string stencilFileName = @"C:\siva\CreateGen1Visio\eswstencil.vss";

        try
        {
            if (System.IO.File.Exists(fileName))
            {
                visioDocument = visioApplication.Documents.OpenEx(fileName, (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDontList);
                visioPage = visioDocument.Application.ActivePage;
                visioPage.Application.Documents.OpenEx(stencilFileName, (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDocked);
                visioDocument.SaveAsEx(fileName, (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visSaveAsWS);
            }
        }
   }

你好,尼古拉,谢谢你的建议。我已经试过了。(短)VisOpenSaveArgs.visOpenRO:将以只读模式打开模具。在这种情况下,只需打开一个新的模具窗口和一个visio文档,这会在保存时增加额外的开销。将模具添加到visio文件的确切方法是(短)VisOpenSaveArgs.visOpenDocked。