Pokúsil som sa odstrániť všetky tvary s nasledujúcim kódom:
PowerPoint.Application ppApp = Globals.ThisAddIn.aplikácie; PowerPoint.Presentation ppP = ppApp.ActivePresentation; PowerPoint.Slide ppS = ppApp.ActiveWindow.Selection.SlideRange [1]; PowerPoint.Shapes tvary = ppS.Shapes; foreach (PowerPoint.Shape tvar v tvare) { shape.Delete (tvar); }
Nemôžem odstrániť všetky tvary, ako som očakával,pretože keď je tvar odstránený, bude to mať vplyv na PowerPoint.Shapes. Ak chcem odstrániť všetky tvary, musím pridať všetky tvary do zoznamu a potom ich odstrániť ako:
PowerPoint.Application ppApp = Globals.ThisAddIn.aplikácie; PowerPoint.Presentation ppP = ppApp.ActivePresentation; PowerPoint.Slide ppS = ppApp.ActiveWindow.Selection.SlideRange [1]; PowerPoint.Shapes tvary = ppS.Shapes; if (shape == null) návrat; List listShapes = new Zoznam (); foreach (PowerPoint.Shape tvar v tvare) { listShapes.Add (tvar); } foreach (tvar PowerPoint.Shape v zoznameShapes) { shape.Delete (); }
Existujú iné spôsoby rýchleho odstránenia?
odpovede:
1 pre odpoveď č. 1Z kolekcie môžete „t iterovať“ a odstrániť položku z tejto kolekcie, pretože to má vplyv na kolekciu.
while (shapes.Count > 0) {
shapes[0].Delete();
}
Nie 100% istí syntaxe vo vzťahu k PowerPointu, ale to je všeobecná myšlienka.