單擊滑鼠時
'得到需要拖拽的對象 ,修改此處
Dim item As Rectangle = sender
'擷取滑鼠當前位置
mouseVerticalPosition = e.GetPosition(Nothing).Y
mouseHorizontalPosition = e.GetPosition(Nothing).X
'啟用滑鼠捕獲
isMouseCaptured = True
'將滑鼠捕獲設定為 UIElement
item.CaptureMouse()
移動滑鼠時
鬆開滑鼠時
Private Sub RectAClick(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
'若已經處理過, 則不處理
e.Handled = True
Me.statusTextBlock.Text = "x:y=" & e.GetPosition(Me.ParentCanvas).ToString & ".RectA is Click,not BubbleUp"
End Sub
Dim isMouseCaptured As Boolean
Dim mouseVerticalPosition As Double
Dim mouseHorizontalPosition As Double
Private Sub Rect_Handle_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
Dim item As Rectangle = sender
'擷取滑鼠當前位置
mouseVerticalPosition = e.GetPosition(Nothing).Y
mouseHorizontalPosition = e.GetPosition(Nothing).X
'啟用滑鼠捕獲
isMouseCaptured = True
'將滑鼠捕獲設定為 UIElement
item.CaptureMouse()
End Sub
Private Sub Rect_Handle_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseEventArgs)
Dim item As Rectangle = sender
If (isMouseCaptured) Then
' 計算對象的當前位置
Dim deltaV As Double = e.GetPosition(Nothing).Y - mouseVerticalPosition
Dim deltaH As Double = e.GetPosition(Nothing).X - mouseHorizontalPosition
Dim newTop As Double = deltaV + item.GetValue(Canvas.TopProperty)
Dim newLeft As Double = deltaH + item.GetValue(Canvas.LeftProperty)
' 設定對象新位置
item.SetValue(Canvas.TopProperty, newTop)
item.SetValue(Canvas.LeftProperty, newLeft)
' Update position global variables.
mouseVerticalPosition = e.GetPosition(Nothing).Y
mouseHorizontalPosition = e.GetPosition(Nothing).X
End If
End Sub
Private Sub Rect_Handle_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Input.MouseButtonEventArgs)
Dim item As Rectangle = sender
isMouseCaptured = False
item.ReleaseMouseCapture()
mouseVerticalPosition = -1
mouseHorizontalPosition = -1
End Sub