Как получить детали группового объекта в MS Visio через C # - PullRequest
0 голосов
/ 22 марта 2019

У меня есть объект формы, нарисованный как «группа» с текстом как «P0», объект группы содержит два других небольших объекта формы с текстом как «P1».

enter image description here

Как я могу получить детали этого группового объекта, чтобы у меня был доступ к тексту всех трех объектов формы - «P0», «P1», «P1». Любая помощь будет высоко ценится.

1 Ответ

2 голосов
/ 22 марта 2019

Предполагая, что:

  • целевой формой является групповая фигура (а не контейнер)
  • две подвиды являются прямыми детьми группы

тогда будет работать следующее:

//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.

...