1

我需要创建一个 Visio 文档并从 .vss 文件中添加形状。我能够添加简单的形状并向其添加文本,而不会出现任何问题。但是当我尝试添加一个形状时遇到问题,该形状是 4 个矩形组合在一起的集合(我相信它被称为母版)并向每个形状添加文本。

我想在组中的每个矩形形状中填充值(添加文本)。一旦我将此母版放到 Visio 页面中,它就会显示为一个组。我可以使用该Ungroup()方法取消对每个矩形的分组。但我不知道如何从这个组中获取每个单独的元素。有没有一种方法可以唯一标识该组中的每个元素?或者遍历组并找到每个元素?请看下面的代码,到目前为止我做了什么。

Visio.Document doc = application.Documents.Add(@"\example.vst");
Visio.Page page = application.Documents[1].Pages[1];
Visio.Documents vdocs = application.Documents;
Visio.Document visioStencil = vdocs.OpenEx(@"\sample.vss", (short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDocked);
Visio.Page visioPage = application.ActivePage;
Visio.Shapes visShapes = visioPage.Shapes;
//the following shape in the setensil is the group of 4 rectanle I was referring 
Visio.Master visioConvMaster = visioStencil.Masters.get_ItemU(@"Conveyance");
Visio.Shape visioConvShape = visioPage.Drop(visioConvMaster, 4.25, 5.5);
//try to ungroup to get each 
visioConvShape.Ungroup();

知道我应该如何进一步进行吗?我对 Microsoft 技术真的很陌生。我正在使用 Visual Studio 2012 专业版和 Visio 2010 高级版。

提前致谢。

4

1 回答 1

1

Visio.Shape 对象具有属性“Shapes”,它是子形状的集合。不要取消分组;首先,遍历 Shapes 集合(visioConvShape.Shapes[0]、visioConvShape.Shapes[1] 等),然后如果您需要取消分组,请在至少执行了您需要的任何操作或识别它们之后执行此操作和/或给他们可重用的名称。

于 2013-05-10T17:27:14.107 回答