2012-01-04 47 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

相關問題