Угу,
прочитать: http://msdn.microsoft.com/en-us/library/office/jj227375.aspx
в конструкторе или где-нибудь
Application.AfterShapeSizeChange += AfterShapeSizeChanged;
Затем создайте функцию
// Object "shape" is the one you currently edit
void AfterShapeSizeChange(Microsoft.Office.Interop.PowerPoint.Shape shape)
{
// do something
}
Обратите внимание, что это работает только в PPT 2013. Для предыдущих версий (2007 или 2010) вам может потребоваться больше усилий. Я реализовал этот подход себя и никогда не нашел лучшее решение:
1. Создать прокси-класс для всех вашего объекта формы
2. Записи атрибутов (позы, ширина, и высота), необходимо сравнить значения у вас есть с текущим объектом формы
3. Создать таймер (создать аналогичную функцию, как поток, но это один синхронизирован с WinForm), проверьте сверхурочно, установить его 15 раз в секунду d достаточно хорошо. только проверить выбранную форму, не проверять все формы у вас есть в вашем РРТ или это будет очень медленно
4. Объединить с событием WindowSelectionChange http://msdn.microsoft.com/en-us/library/office/ff743918.aspx (это одно, чтобы справиться с Ctrl + Z или Ctrl + y, где пользователи могут выполнять редактирование с отменой или повторением, тем самым редактируя фигуры, которые не находятся на текущем выбранном слайде). внутри WindowSelectionChange() Аналогично пункту 3, но теперь вам нужно проверить все фигуры, которые у вас есть.
Привет, Спасибо за ваш ответ и ценную информацию. Да, событие AfterShapeSizeChange поддерживается только в PPT 2013. Но мне это нужно и для 2007 и 2010 годов. Я попытался, но не получил никакого решения. Есть ли способ достичь этого в 2007 и 2010 годах? – user2609159
yep, это в моем ответе – azer89
Привет, спасибо! Я понимаю ваш подход. Есть ли ссылка на код для этого подхода, пожалуйста? – user2609159