Powerpoint中的VSTO:在WindowSelectionChange中更改自定义任务窗格可见性会移动所选形状

时间:2012-01-04 11:16:38

标签: events ms-office vsto powerpoint

我想我发现了一个错误。 我正在为Powerpoint 2010开发一个加载项。当选择/取消选择形状(例如图片)时会触发事件WindowSelectionChange。 但是,如果我使用此事件更改自定义任务窗格的“可见性”属性,则形状将在幻灯片上向左/向右移动。例如:

Private Sub Application_WindowSelectionChange(Sel As Microsoft.Office.Interop.PowerPoint.Selection) Handles Application.WindowSelectionChange
    cTaskPane.Visible = Not cTaskPane.Visible
End Sub

我试图监视形状的Left属性,并且不会从WindowSelectionChange子的开头到结尾发生变化。因此,它必须在事后发生。

我该如何避免这种情况? 任何解决方法?

1 个答案:

答案 0 :(得分:0)

这是因为你的鼠标正在保持形状,当窗口收缩时,形状会向右移动。

更详细地说,移动分4个步骤进行:

  1. 您按下鼠标,导致窗口选择更改,然后窗格变为可见,这使幻灯片视图窗口缩小;
  2. 由于幻灯片视图窗口缩小而鼠标位置保持不变,因此鼠标会在幻灯片上向右移动;
  3. 由于鼠标按下,因此用鼠标固定形状,从而移动到鼠标的当前位置;
  4. 当窗格再次变为不可见时,幻灯片视图窗口会改变其大小,形状会相应地再次移动。
  5. 为避免这种情况,我建议您使用WindowSelectionChange事件并检查选择是否为shape(代码在c#中):

    private void WindowSelectionChangedHandler(PowerPoint.Selection selection)
    {
        if (selection.Type == PowerPoint.PpSelectionType.ppSelectionShapes)
        {
             //do your stuff
        }
    }