Я намагався видалити всі фігури за допомогою наступного фрагмента коду:
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, але це загальна ідея.