如何在PowerPoint中锁定形状?

时间:2013-08-05 16:45:45

标签: c# powerpoint office-interop powerpoint-2010

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

我已经在框架中寻求过但我认为不允许使用programmaticaly。有没有人遇到过这种限制,可以帮我找到解决方案?

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

2 个答案:

答案 0 :(得分:3)

我找到了两个解决方案:

  • 第一个是从“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();

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

答案 1 :(得分:1)

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

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

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