gpt4 book ai didi

c# - PPT 幻灯片对象调整大小后捕捉事件

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:07 26 4
gpt4 key购买 nike

我正在 office powerpoint(2007、2010 和 2013 版本)上做一些开发工作,并寻找一个将在 PowerPoint 幻灯片中调整对象(如文本框)大小时触发的事件。我想在用 C# 编码的 COM 加载项中捕获此事件。有什么办法可以做到这一点?请指教。

谢谢,萨蒂什

最佳答案

是的,

读这个: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(创建类似thread的功能,不过这个是和winform同步的),检查超时,设置15次/秒就好了足够的。只检查当前选择的形状,不要检查你ppt中的所有形状,否则会非常慢

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

关于c# - PPT 幻灯片对象调整大小后捕捉事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17801653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com