먼저 마우스가 일부 영역에 있는지 알고 싶습니다. 그러면 마우스에 왼쪽 클릭이 있는지 확인하고 싶습니다. 왼쪽 버튼이 눌러져 있는지 확인하고 싶습니다. 마우스의 위치를 추적하고 싶습니다. 마지막으로 왼쪽 버튼을 놓았는지 확인하십시오.VB.NET에서 마우스 클릭 및 드래그 이벤트를 어떻게 추적합니까?
간단히 말해, 양식에서 마우스 이벤트를 추적하려면 어디에서 시작해야합니까?
먼저 마우스가 일부 영역에 있는지 알고 싶습니다. 그러면 마우스에 왼쪽 클릭이 있는지 확인하고 싶습니다. 왼쪽 버튼이 눌러져 있는지 확인하고 싶습니다. 마우스의 위치를 추적하고 싶습니다. 마지막으로 왼쪽 버튼을 놓았는지 확인하십시오.VB.NET에서 마우스 클릭 및 드래그 이벤트를 어떻게 추적합니까?
간단히 말해, 양식에서 마우스 이벤트를 추적하려면 어디에서 시작해야합니까?
일반적으로 말하면 마우스 다운 이벤트가 발생하면 마우스를 캡처해야합니다. 그런 다음 마우스가 마우스를 잡은 컨트롤 영역을 벗어나더라도 마우스 이동 이벤트를받습니다. 마우스 이동 이벤트에서 델타를 계산할 수 있습니다. 드래그는 델타가 시스템 정의 된 "끌기 영역"을 처음 초과 할 때 발생합니다. 마우스 업 이벤트가 수신되면 드래그 작업을 중지하십시오.
Windows Forms에서 Control 클래스의 MouseDown, MouseMove 및 MouseUp 이벤트를 확인하십시오. MouseEventArgs에는 X/Y 좌표가 포함됩니다. 마우스를 캡처하거나 해제하려면 Capture 속성을 각각 true 또는 false로 설정합니다. 마우스를 캡처하지 않으면 마우스가 컨트롤 범위 밖으로 벗어난 경우 MouseMove 또는 MouseUp 이벤트가 수신되지 않습니다.
마지막으로 드래그 작업을 시작하기 전에 마우스가 움직여야하는 최소 "거리"를 확인하려면 SystemInformation.DragSize 속성을 확인하십시오.
희망이 도움이됩니다.
이 작업을 수행하는 유일한 방법은 javascript를 사용하는 것입니다.
이 기사에서는이 내용을 설명합니다. http://luke.breuer.com/tutorial/javascript-drag-and-drop-tutorial.aspx
이 드래그를 감지하거나
Public IsDragging As Boolean = False, IsClick As Boolean = False
Public StartPoint, FirstPoint, LastPoint As Point
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picBook.Click
If IsClick = True Then MsgBox("CLick")
End Sub
Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picBook.MouseDown
StartPoint = picBook.PointToScreen(New Point(e.X, e.Y))
FirstPoint = StartPoint
IsDragging = True
End Sub
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picBook.MouseMove
If IsDragging Then
Dim EndPoint As Point = picBook.PointToScreen(New Point(e.X, e.Y))
IsClick = False
picBook.Left += (EndPoint.X - StartPoint.X)
picBook.Top += (EndPoint.Y - StartPoint.Y)
StartPoint = EndPoint
LastPoint = EndPoint
End If
End Sub
Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles picBook.MouseUp
IsDragging = False
If LastPoint = StartPoint Then IsClick = True Else IsClick = False
End Sub
당연이 오래지만, 같은 일을 보면서 나는이 게시물에 걸쳐 실행을 클릭에 대한 간단한 코드입니다. 나는 실제 끌기 사건이 있을지도 모르다는 것을 생각했다, 그러나 나는 짐작하지 않는다. 여기 내가 어떻게 그랬어.
Private Sub ContainerToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ContainerToolStripMenuItem.Click
Dim pnl As New Panel
pnl.Size = New Size(160, 160)
pnl.BackColor = Color.White
AddHandler pnl.MouseDown, AddressOf Control_DragEnter
AddHandler pnl.MouseUp, AddressOf Control_DragLeave
AddHandler pnl.MouseMove, AddressOf Control_Move
Me.Controls.Add(pnl)
End Sub
Private Sub Control_DragEnter(ByVal sender As Object, ByVal e As EventArgs)
MouseDragging = True
End Sub
Private Sub Control_DragLeave(ByVal sender As Object, ByVal e As EventArgs)
MouseDragging = False
End Sub
Private Sub Control_Move(ByVal sender As Object, ByVal e As EventArgs)
If MouseDragging = True Then
sender.Location = Me.PointToClient(Control.MousePosition)
End If
End Sub
ContainerToolStripMenuItem
는 즉석에서 패널을 추가 내 ToolStrip에서입니다. MouseDragging
은 클래스 수준입니다. 끌기는 매력처럼. 또한 Cursor.Position
을 사용하지 마십시오. Form (또는 현재 가지고있는 컨테이너)이 아닌 전체 창에 상대적인 위치를 반환합니다.
허용, OP는 그가 사용하고있는 것에 대해 명확 해졌을 수도 있지만 그가 HTML에서 이것을하려고하고 있다고 생각하지 않습니다. – Josh