Frage

Ich habe programmatisch (VSTO) hinzugefügt Animationen auf die Powerpoint-Folie mit dem folgenden Code

    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;

Wie würde ich mich über die Animation zu löschen, ohne textBox2 löschen? Gibt es einen Weg durch die Animationen zu überqueren und finden die, die ich brauche, um zu löschen, die mit textBox2 verbunden?

War es hilfreich?

Lösung 2

Dank Shyam Pillai für die Antwort, ich seinen VBA-Code übersetzt wie folgt:

    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();
                }
            }
        }
    }

Andere Tipps

Vergib mir, weil ich habe keine PPT 2010 praktisch (Sie in Ihrer Frage beachten sollte, ist, dass Version), aber das sollten Sie in die richtige Richtung gestartet.

InteractiveSequences ist eine Sammlung von Objekten Sequence
Sequence Objekt ist wirklich eine Sammlung von Objekten Effect
Effect Objekte haben eine Shape Eigenschaft

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

Ich glaube, es ist ein Entfernen oder vielleicht eine Löschfunktion für das Effect-Objekt selbst.

Es ist einfach das Löschen der Animation ohne Textbox löschen:

dim osh as shape

set osh = .....

oSh.AnimationSettings.Animate = 0 => deleting the animation of osh 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top