/ / Видалити всі форми слайда PowerPoint - .net, c # -4.0, powerpoint, powerpoint-vba, powerpoint-2010

Видалити всі форми PowerPoint Slide - .net, c # -4.0, powerpoint, powerpoint-vba, powerpoint-2010

Я намагався видалити всі фігури за допомогою наступного фрагмента коду:


PowerPoint.Application ppApp = Globals.ThisAddIn.Застосування; PowerPoint.Presentation ppP = ppApp.ActivePresentation; PowerPoint.Slide ppS = ppApp.ActiveWindow.Selection.SlideRange [1]; Форми PowerPoint.Shapes = ppS.Shapes;  передбачити (PowerPoint.Shape форма у формах) { форма.Делете (форма); }

Він не може видалити всі форми, як я очікував,тому що коли форма буде видалена, вона вплине на PowerPoint.Shapes. Якщо я хочу видалити всі фігури, мені потрібно додати всі фігури до списку, а потім видалити кожну, як:


PowerPoint.Application ppApp = Globals.ThisAddIn.Застосування; PowerPoint.Presentation ppP = ppApp.ActivePresentation; PowerPoint.Slide ppS = ppApp.ActiveWindow.Selection.SlideRange [1]; Форми PowerPoint.Shapes = ppS.Shapes; if (shape == null) повертається;  Список listShapes = новий List (); передбачити (PowerPoint.Shape форма у формах) { listShapes.Add (форма); }  foreach (PowerPoint.Shape shape in listShapes) { форма.Делете (); }

Чи є інші способи швидшого видалення?

Відповіді:

1 для відповіді № 1

Ви не можете "повторити" колекцію та видалити елемент із цієї колекції, оскільки це впливає на колекцію. Тому просто спробуйте уникати циклу "для кожного":

while (shapes.Count > 0) {
shapes[0].Delete();
}

Не на 100% впевнений у синтаксисі стосовно PowerPoint, але це загальна ідея.