Pregunta

Tengo programación (VSTO) animaciones añadido a la diapositiva de PowerPoint utilizando el siguiente código

    activeSlide.TimeLine.InteractiveSequences.Add().AddTriggerEffect(
        textBox2,
        MsoAnimEffect.msoAnimEffectFade,
        MsoAnimTriggerType.msoAnimTriggerOnMediaBookmark,
        selectedShape,
        "Bookmark A",
        MsoAnimateByLevel.msoAnimateLevelNone);   

    activeSlide.TimeLine.InteractiveSequences.Add().AddTriggerEffect(
        textBox2,
        MsoAnimEffect.msoAnimEffectFade,
        MsoAnimTriggerType.msoAnimTriggerOnMediaBookmark,
        selectedShape,
        "Bookmark B",
        MsoAnimateByLevel.msoAnimateLevelNone).Exit = MsoTriState.msoTrue;

Entonces, ¿cómo hago para borrar la animación sin borrar textBox2? ¿Hay una manera de recorrer a través de las animaciones y encontrar los que necesito para eliminar las cuales están asociadas con textBox2?

¿Fue útil?

Solución 2

Gracias a Shyam Pillai para la respuesta, que traducen su código VBA de la siguiente manera:

    private void DeleteAnnimations(Slide slide, Shape shape)
    {
        for (int i = slide.TimeLine.InteractiveSequences.Count; i >= 1; i--)
        {
            Sequence sequence = slide.TimeLine.InteractiveSequences[i];
            for (int x = sequence.Count; x >= 1; x--)
            {
                Effect effect = sequence[x];
                if (effect.Timing.TriggerType == MsoAnimTriggerType.msoAnimTriggerOnMediaBookmark)
                {
                    if (effect.Shape.Name == shape.Name)
                        effect.Delete();
                }
            }
        }
    }

Otros consejos

Perdóname porque yo no tengo PPT 2010 práctico (se debe tener en cuenta en su pregunta es que la versión), pero esto debe empezar en la dirección correcta.

InteractiveSequences es una colección de objetos Sequence
Sequence objeto es en realidad una colección de objetos Effect
Effect objetos tienen una propiedad Shape

foreach (Sequence seq in activeSlide.TimeLine.InteractiveSequences)
  foreach (Effect eff in seq)
    if (eff.Shape == "target shape")
      ...

Creo que hay una remove o tal vez una función de eliminación para el propio objeto de efecto.

es simplemente borrar la animación sin borrar cuadro de texto:

dim osh as shape

set osh = .....

oSh.AnimationSettings.Animate = 0 => deleting the animation of osh 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top