如何通过C#在MS Visio中获取组对象的详细信息

时间:2019-03-22 10:31:11

标签: c# interop visio flowchart

我有一个形状对象绘制为“组”,文本为“ P0”,该组对象包含另外两个小形状对象,文本为“ P1”。

enter image description here

如何获取该组对象的详细信息,以便可以访问所有三个形状对象的文本-'P0','P1','P1'。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

假设:

  • 目标形状是组形状(而不是容器)
  • 这两个子形状是该组的直接子对象

然后执行以下操作:

//Some method to get your target shape
var shp = vApp.ActivePage.Shapes.ItemFromID[1];

shp.Characters.Text.Dump($"Group shape - ({shp.NameID})");
foreach (Visio.Shape s in shp.Shapes)
{
    s.Characters.Text.Dump($"Sub shape - ({s.NameID})");
}

注意-Dump方法只是LINQPad中的扩展方法,但是您可以将它替换为Console.WriteLine或类似的方法。

上面的代码将产生与此类似的输出(在这里,我已将第二个子形状的文本更改为“ P2”):

enter image description here

此外,您可以直接使用Shape.Text属性,但是文本中的任何字段都不会扩展。因此,要获得用户看到的全文,请改用Shape.Characters.Text