5

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

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

我知道有些人使用 C++ 创建了他们的插件,因为在办公室有很多限制。

4

2 回答 2

4

我找到了两种解决方案:

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

要查看选择了哪个形状:

var selectedShape = this.Application.ActiveWindow.Selection.ShapeRange[1]

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

this.Application.ActiveWindow.Selection.Unselect();

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

于 2013-08-21T08:10:22.873 回答
2

我相信这是不可能的。在一定程度上实现这一点的一种方法(如果他们知道如何选择下面的形状,人们可以解决它)是通过制作一个与画布大小相同的透明矩形并将自定义事件绑定到该矩形(就像您在评论)。透明矩形覆盖了您创建的形状,因此人们无法再以这种方式访问​​这些形状。当然,如果他们能够弄清楚如何选择形状,他们无论如何都可以移动它们......

或者,为了让人们不做那样的事情(你只会阻止没有经验的人),你也可以将它们设置为母版幻灯片。

对于不这样做的人来说,只有“真正的”解决方案?图像..但他们也可以移动图像!

于 2013-08-12T08:33:41.070 回答