2

I'm doing some development work on office powerpoint (2007, 2010, and 2013 versions) and looking for an event which will be triggered on resizing the object (like textbox) in PowerPoint Slide. I would like to capture this event in COM add-in coded in C# . Is there any way to achieve this? Please advise.

Thanks, Satish

4

1 回答 1

0

是的,

阅读: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.记录属性(pos、width、height),需要将自己拥有的值与当前shape对象进行比较

3.创建一个Timer (创建一个类似线程的功能,但这个是与winform同步的),检查超时,设置它每秒15次就足够了。只检查当前选择的形状,不要检查你的 ppt 中的所有形状,否则会非常慢

4.结合事件WindowSelectionChange http://msdn.microsoft.com/en-us/library/office/ff743918.aspx(这个是为了配合ctrl+z或者ctrl+y,用户可以通过undo或者重做,从而编辑不在当前选定幻灯片上的形状)。在 WindowSelectionChange() 中类似于第 3 点,但现在您需要检查您拥有的所有形状。

于 2013-07-23T09:28:24.733 回答