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
事件被调用。我错过了什么?
答
这是非常糟糕的......我使用了错误的签名,但没有告诉我我错了。
我找到了解决方案here。我使用DragEventArgs
而不是EventArgs
作为e
的类型。在改变它的类型后,它就像预期的那样工作
因此没有检查一个评论而不是答案,但是您需要处理目标上的DragLeave事件。 – OSKM
@OSKM我认为这是事实,但目标和源代码是同一个类的实例,所以目标应该处理事件还是我错了? – Obenland