2012-01-04 48 views
1

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

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

我试图监控形状的左属性,不从一开始到WindowSelectionChange子的结束而改变。因此,它必须在事后发生。

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

+0

而且,我不知道这件事之后,什么触发。 – user979719 2012-01-04 12:53:33

+0

请看这里的问题的屏幕录音: http://www.youtube.com/watch?v=Dr5Dy5mwOI0 – user979719 2012-01-05 09:01:36

+0

尝试从WindowSelectionChange触发事件并使用事件回调来设置任务面板... – Fabio 2012-07-14 09:20:09

回答

0

这是因为你的鼠标握着形状,当窗口缩小时形状被移动到右边。

更详细地,移动在4个步骤发生:

  1. 按下鼠标,引起窗口选择改变,则该窗格变得可见,这使得该滑动视图窗口收缩;
  2. 由于幻灯片视图窗口缩小,而鼠标的位置仍然相同,鼠标右移w.r.t幻灯片;
  3. 由于您的鼠标正在按下,形状将与您的鼠标一起固定,因此会移至鼠标的当前位置;
  4. 当窗格再次变为不可见时,幻灯片视图窗口将其大小改回,形状再次相应移动。

为了避免这种情况,我建议你使用WindowSelectionChange事件,并检查是否选择形状(代码是在C#):

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

对不起,你从哪里得到这个活动?对于C#或VB,它不存在于VS2013中。你在哪里接线? – 2015-04-09 18:00:31

+0

它应该是WindowSelectionChange事件。处理程序的名称是误导性的,对此抱歉:P我已更新了答案:) – nevets 2015-04-09 22:20:33

相关问题