2010-01-28 82 views
3

我在這裏有一個奇怪的問題。我用一個工具窗口的Visual Studio集成包/ VSIX項目嚮導創建了一個簡單的插件。在那個窗口中,我想從列表框中簡單地拖放,然後放在同一個窗口中。我在一個正常的WPF程序中做了同樣的事情,但是當我在WS toolwindow中這樣做時,它是不允許的。我開始拖放操作(由PreviewMouseLeftButtonDown事件啓動)並調用DragDrop.DoDragDrop()方法,我立即得到停止標誌遊標。不允許拖動。拖放在VS2010中的WPF ToolWindow中不允許擴展

任何想法?安全限制或事實的影響,這些WPF控件託管在ToolWindowPane和舊的Visual Studio IDE COM東西我猜...感謝任何幫助!

+0

同樣的事情只是打我。 – Will 2011-10-05 18:44:16

回答

5

微軟的Alin Constantin幫助我在這裏,甚至寫了一篇關於如何在VS2010中正確拖放的博客文章!

http://alinconstantin.blogspot.com/2010/02/drag-and-drop-in-visual-studio-2010.html


亮點,在鏈接腐爛的情況:

在您的工具窗口(用戶控件),覆蓋OnDragEnterOnDragOver重要!)和OnDrop。未能覆蓋OnDragOver將導致拖放失敗。

OnDragEnter,請執行下列操作:

  1. 檢查,看看是否可以處理的下降
  2. 如果是的話,設置DragEventArgs.HandledtrueDragEventArgs.Effects爲適當的值
  3. 呼叫base.OnDragEnter()

OnDragOver,你必須做相同東西 as OnDragEnter。如果您未能設置Handled,Visual Studio將接管並且您將無法處理該丟棄!

OnDrop

  1. 手柄下降
  2. 設置DragEventArgs.Handledtrue
  3. 呼叫base.OnDrop()

記住,不是處理OnDragOver將導致在Visual Studio接管拖動操作,否認你在OnDrop處理它的能力。