Доступ к активному слайду / доступ к активной фигуре на слайде в PowerPoint-VSTO


Есть ли способ получить доступ к текущему активному слайду в презентации PowerPoint с помощью VSTO? Также было бы неплохо, если бы я мог получить в настоящее время активную форму. Я знаю, как перебирать слайды / фигуры, но не могу найти ни одного свойства, чтобы выяснить, активен ли слайд / фигура:

        foreach (Slide slide in presentation.Slides)
        {
            foreach (Shape shape in slide.Shapes)
            {
            }
        }
1 3

1 ответ:

Посмотрите на это .Выбор объекта.

У него есть a .Введите свойство, которое сообщает вам, что выбрано. Если это SlideRange, выбор может быть одним или несколькими слайдами; вам решать, что делать, если > 1 ,но если 1, то.Выбор.SlideRange (1) дает ссылку на выбранный слайд.

.Тип может возвращать ShapeRange, и в этом случае вы будете использовать .Выбор.ShapeRange (1) для получения текущей фигуры или первой фигуры в диапазоне, если выбрано несколько фигур. Форма .Родительское свойство возвращает ссылку на слайд, на котором находится фигура (слайд, мастер, макет, что угодно).

Если .Тип возвращает TextRange, вам нужно пройти несколько шагов вверх по родительской цепочке; родителем текста является textrange, родителем textrange является содержащая фигура, а родителем фигуры является слайд, на котором находится фигура.

Это может развалиться в некоторых версиях PowerPoint 2007 (он сломан до SP1 или 2, Насколько я помню), и он все еще сломан в 2010 году, когда текст в таблице выбранный. Вы можете манипулировать текстом, Вы можете получить доступ к некоторым свойствам фигуры, которая содержит текст, но не ко всем, и вы не можете подняться .Родительская лестница к горке.