如何通过 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
。
我有一个形状对象绘制为 '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
。