2011-09-10 14 views
0

カスタムドラッグ操作を実装してパネルをソートしようとしています。ドラッグまたはマウスボタンが押された場合、SenderがMouseMoveで更新されない

MouseDownイベントの変数にオブジェクトを割り当て、その上にマウスをドラッグしたときに隣接パネルのMouseMoveイベントを調べることによって相対位置を追跡します。

Private Sub ThumbnailMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) 

    _thumbnailMove = DirectCast(sender, Windows.Forms.Control) ‘The object to move 

End Sub 

問題は、MouseMoveイベントのSenderパラメータが変化したことがないということである - それは、常にMouseDownイベントを受信したオブジェクトを返します。

Private Sub ThumbnailMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) 

    Console.WriteLine(sender.Name) 'Always returns the name of the _thumbnailToMove 

End Sub 

MouseMoveのSender引数が、現在マウスが現在の実際のオブジェクトを返さないのはなぜですか?

答えて

0

この動作を無効にするには、Control.CapureプロパティをFalseに設定します。

Private Sub ThumbnailMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) 

    DirectCast(sender, Windows.Forms.Control).Capture = False 'Don't capture the mouse 
    _thumbnailMove = DirectCast(sender, Windows.Forms.Control) 

End Sub 

MouseMoveイベントは、マウスが移動する実際のオブジェクトを返します。

関連する問題