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

How to get the details of a group object in MS Visio through C#

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

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

假设:

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

那么下面的方法就可以了:

//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'):

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