Domanda

Ho programmazione (VSTO) animazioni aggiunto alla diapositiva di PowerPoint utilizzando il seguente codice

    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;

Quindi, come potrei fare per l'eliminazione l'animazione senza eliminare textBox2? C'è un modo per attraversare attraverso le animazioni e trovare quelli che ho bisogno di eliminare, che sono associati con textBox2?

È stato utile?

Soluzione 2

Grazie a Shyam Pillai per la risposta, ho tradotto il suo codice VBA come segue:

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

Altri suggerimenti

Perdonami, perché non ho PPT 2010 a portata di mano (si dovrebbe notare nella tua domanda è che la versione), ma questo dovrebbe iniziare nella giusta direzione.

InteractiveSequences è una collezione di oggetti Sequence
oggetto Sequence è davvero una collezione di oggetti Effect
oggetti Effect hanno una proprietà Shape

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

Credo che ci sia un rimuovere o forse una funzione di eliminazione per l'oggetto Effect stesso.

è semplicemente cancellando l'animazione senza eliminare casella di testo:

dim osh as shape

set osh = .....

oSh.AnimationSettings.Animate = 0 => deleting the animation of osh 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top