DragLeave不会在我的VB.Net应用程序中调用

问题描述:

我试着拖放一个自定义控件。它应该可以放到同一个类的另一个实例上。因此,这里是我使用的代码:DragLeave不会在我的VB.Net应用程序中调用

Private Sub HandleMouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles Me.MouseDown 
    Me.DoDragDrop(Me, DragDropEffects.Copy) 
End Sub 

Private Sub HandleDragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragEnter 
    e.Effect = If(checkDropData(e), DragDropEffects.Copy, DragDropEffects.None) 
End Sub 

Private Sub HandleDragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragDrop 
    addControl(e.Data.GetData(GetType(MyControl))) 
End Sub 

Private Sub HandleDragLeave(ByVal sender As Object, ByVal e As DragEventArgs) Handles Me.DragLeave 
    Console.WriteLine("HandleDragLeave: " & sender.ToString) 
End Sub 

我能够放弃控制,但同时绝不拖动DragLeave事件被调用。我错过了什么?

+1

因此没有检查一个评论而不是答案,但是您需要处理目标上的DragLeave事件。 – OSKM

+0

@OSKM我认为这是事实,但目标和源代码是同一个类的实例,所以目标应该处理事件还是我错了? – Obenland

这是非常糟糕的......我使用了错误的签名,但没有告诉我我错了。

我找到了解决方案here。我使用DragEventArgs而不是EventArgs作为e的类型。在改变它的类型后,它就像预期的那样工作