C# 从Visio VSSX文档导入形状

C# 从Visio VSSX文档导入形状,c#,vsto,office-addins,visio,C#,Vsto,Office Addins,Visio,我有一个带有一些形状的Visio stencil文档,我想将其中包含的形状添加到我的文档中。基于我能够做到这一点,唯一的问题是如何摆脱dock面板,该面板在使用Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDocked标志打开模具时出现 因此,导入后,我关闭打开的模具文档,但停靠面板保持不变。也许我也可以以编程方式关闭它,但是我应该考虑复杂的逻辑,跟踪WHATER,如果用户以前打开这个面板等,则打开或不保持UI不变。 我的问题是,是否

我有一个带有一些形状的Visio stencil文档,我想将其中包含的形状添加到我的文档中。基于我能够做到这一点,唯一的问题是如何摆脱dock面板,该面板在使用Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDocked标志打开模具时出现

因此,导入后,我关闭打开的模具文档,但停靠面板保持不变。也许我也可以以编程方式关闭它,但是我应该考虑复杂的逻辑,跟踪WHATER,如果用户以前打开这个面板等,则打开或不保持UI不变。 我的问题是,是否有其他选项可以从模具导入形状,或者此面板和模具文档打开选项的解决方法(例如,打开隐藏的模具文档,然后以静默方式关闭它)

//Microsoft.Office.Interop.Visio.Application
var文件=应用程序文件;
var文件=文件。添加(“”);
var page=Application.ActivePage;
var visionstencil=documents.OpenEx(
@“c:\Users\user\Desktop\stencil.vssx”,
(简称)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDocked);
var masters=visionstencil.masters;

对于(var i=1;i您可以在“隐藏”状态下打开模具文档,还可以使用
Masters.Drop
方法直接添加到目标Masters集合,如下所示:

var targetDoc = vApp.Documents.Add("");
var sourceDoc = vApp.Documents.OpenEx(
    @"c:\Users\user\Desktop\stencil.vssx",
    (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visAddHidden);
var sourceMasters = sourceDoc.Masters;

for (var i = 1; i <= sourceMasters.Count; ++i)
{
    var sourceMaster = sourceMasters[i];
    if (sourceMaster.Name == "Master.2")
    {
        targetDoc.Masters.Drop(sourceMaster, 10, 10);
        break;
    }
}

sourceDoc.Close();
var targetDoc=vApp.Documents.Add(“”);
var sourceDoc=vApp.Documents.OpenEx(
@“c:\Users\user\Desktop\stencil.vssx”,
(短)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visAddHidden);
var sourceMasters=sourceDoc.Masters;

对于(var i=1;i您可以在“隐藏”状态下打开模具文档,还可以使用
Masters.Drop
方法直接添加到目标Masters集合,如下所示:

var targetDoc = vApp.Documents.Add("");
var sourceDoc = vApp.Documents.OpenEx(
    @"c:\Users\user\Desktop\stencil.vssx",
    (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visAddHidden);
var sourceMasters = sourceDoc.Masters;

for (var i = 1; i <= sourceMasters.Count; ++i)
{
    var sourceMaster = sourceMasters[i];
    if (sourceMaster.Name == "Master.2")
    {
        targetDoc.Masters.Drop(sourceMaster, 10, 10);
        break;
    }
}

sourceDoc.Close();
var targetDoc=vApp.Documents.Add(“”);
var sourceDoc=vApp.Documents.OpenEx(
@“c:\Users\user\Desktop\stencil.vssx”,
(短)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visAddHidden);
var sourceMasters=sourceDoc.Masters;

对于(var i=1;i无需循环遍历模具中的所有形状。您可以按名称访问形状:

targetDoc.Masters.Drop(sourceMasters["Master.2"], 10, 10);

无需循环浏览模具中的所有形状。您可以按名称访问形状:

targetDoc.Masters.Drop(sourceMasters["Master.2"], 10, 10);