如何在 PowerPoint 中锁定形状?

mon*_*old 5 c# powerpoint office-interop powerpoint-2010

我正在开发 PowerPoint 2010 (C#) 插件,我想阻止最终用户移动或编辑我以编程方式创建的所有形状。

我已经在框架中寻求过,但我认为它不允许以编程方式进行。有没有人遇到过这种限制并且可以帮助我找到解决方案?

我知道有些人使用 C++ 创建了他们的加载项,因为 office 有很多限制。

mon*_*old 4

我找到了两个解决方案:

  • 第一个是捕获来自“commandBars.OnUpdate”的所有事件,例如这个很棒的示例代码:http://code.msdn.microsoft.com/CSExcelNewEventForShapes-0e26b1f2#content 然后您可以强加位置/颜色或您想要的任何内容适合你的形状。
  • 第二个更“残酷”>立即取消选择形状。当您捕获“CommandBars.OnUpdate”中的所有事件时,请执行以下操作:

要查看选择了哪个形状:

var selectedShape = this.Application.ActiveWindow.Selection.ShapeRange[1]
Run Code Online (Sandbox Code Playgroud)

在我的所有形状中,我都设置了一个带有 ID 的标签。我只需检查 selectedShape 的标签中是否有 ID,如果是这种情况:

this.Application.ActiveWindow.Selection.Unselect();
Run Code Online (Sandbox Code Playgroud)

然后我显示一个消息框来警告用户不要选择这种形状。我不喜欢这个解决方案,但这是我找到的唯一一个并且有效的解决方案。