Events Powerpoint中的VSTO:更改Windows中自定义任务窗格的可见性选择更改移动选定形状

Events Powerpoint中的VSTO:更改Windows中自定义任务窗格的可见性选择更改移动选定形状,events,ms-office,vsto,powerpoint,Events,Ms Office,Vsto,Powerpoint,我想我发现了一只虫子。 我正在为Powerpoint 2010开发一个外接程序。当选择/取消选择形状(例如图片)时,将触发事件WindowsSelectionChange。 但是,如果使用此事件更改自定义任务窗格的可见性属性,则形状将在幻灯片上左/右移动。例如: Private Sub Application_WindowSelectionChange(Sel As Microsoft.Office.Interop.PowerPoint.Selection) Handles Applicatio

我想我发现了一只虫子。 我正在为Powerpoint 2010开发一个外接程序。当选择/取消选择形状(例如图片)时,将触发事件WindowsSelectionChange。 但是,如果使用此事件更改自定义任务窗格的可见性属性,则形状将在幻灯片上左/右移动。例如:

Private Sub Application_WindowSelectionChange(Sel As Microsoft.Office.Interop.PowerPoint.Selection) Handles Application.WindowSelectionChange
    cTaskPane.Visible = Not cTaskPane.Visible
End Sub
我已尝试监视形状的Left属性,并且该属性从WindowsSelectionChange子项的开始到结束都不会更改。因此,它必须在之后发生

我怎样才能避免这种情况?
有什么解决方法吗?

这是因为您的鼠标正在按住形状,而当窗口缩小时,形状会向右移动

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

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


    此外,我不确定此事件后触发的是什么。请在此处查看问题的屏幕记录:尝试从WindowsSelectionChange触发事件,并使用事件回调设置任务窗格…抱歉,您从何处获取此事件?对于C#或VB,VS2013中都不存在该选项。你在哪里接线?应该是WindowSelectionChange事件。处理程序的名称有误导性,很抱歉:P我已经更新了答案:)
    private void WindowSelectionChangedHandler(PowerPoint.Selection selection)
    {
        if (selection.Type == PowerPoint.PpSelectionType.ppSelectionShapes)
        {
             //do your stuff
        }
    }