4

我这里有一个奇怪的问题。我使用向导为带有工具窗口的 Visual Studio 集成包/VSIX 项目创建了一个简单的插件。在该窗口中,我想从列表框中进行简单的拖放,然后放到同一个窗口中。我在普通的 WPF 程序中做过同样的事情,但是当我在 WS 工具窗口中这样做时,这是不允许的。我开始拖放操作(由PreviewMouseLeftButtonDown事件启动)并调用该DragDrop.DoDragDrop()方法,我立即获得了停止符号光标。不允许拖动。

有任何想法吗?安全限制或这些 WPF 控件托管在 ToolWindowPane 和旧的 Visual Studio IDE COM 东西中这一事实的影响我猜......感谢您的帮助!

4

1 回答 1

6

Microsoft 的 Alin Constantin 在这里帮助了我,甚至写了一篇关于如何在 VS2010 中正确进行拖放的博客文章!

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


亮点,以防链接失效:

在您的工具窗口(用户控件)中,覆盖OnDragEnterOnDragOver重要!)和OnDrop. 覆盖失败OnDragOver将导致拖放失败。

OnDragEnter中,执行以下操作:

  1. 检查您是否可以处理跌落
  2. 如果是这样,设置为DragEventArgs.Handled适当的值trueDragEventArgs.Effects
  3. 称呼base.OnDragEnter()

OnDragOver中,您必须执行与 相同的操作OnDragEnter。如果设置失败Handled,Visual Studio 将接管,您将无法处理丢弃!

OnDrop,

  1. 处理掉落
  2. 设置DragEventArgs.Handledtrue
  3. 称呼base.OnDrop()

请记住,不处理OnDragOver将导致 Visual Studio 接管拖动操作,从而使您无法在OnDrop.

于 2010-02-05T08:27:04.560 回答