Предполагая, что:
- целевой формой является групповая фигура (а не контейнер)
- две подвиды являются прямыми детьми группы
тогда будет работать следующее:
//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
.