2017-08-16 26 views
1

と呼ばれることはありません。カスタムコントロールをドラッグアンドドロップしようとしています。同じクラスの別のインスタンスにドロップ可能でなければなりません。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

答えて

0

これは非常に悪い...私は間違った署名を使用しましたが、私に間違っていると私に言ったものは何もありませんでした。

解決策が見つかりましたhere。私は、EventArgsの代わりにDragEventArgsをタイプeとして使用しました。タイプを変更すると、期待どおりに動作します。

関連する問題