단일 DataGridView에서 기본 끌어서 놓기 기능을 사용하고 있습니다. 이처럼 :DataGridView에서 끌어서 놓기 취소
나는 마우스 왼쪽 버튼을 누르고 몇 평방가 커서 아래에 나타납니다 및 드래그가 시작 드래그하기 시작Private Sub DataGridView1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragDrop
Dim p As Point = Me.PointToClient(New Point(e.X, e.Y))
dropindex = DataGridView1.HitTest(p.X, p.Y).RowIndex
If (e.Effect = DragDropEffects.Move) Then
Dim dragRow As DataGridViewRow = CType(e.Data.GetData(GetType(DataGridViewRow)), DataGridViewRow)
'' SOME PROCEDURE HERE FOR DROPPING ---
End If
End Sub
Private Sub DataGridView1_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragOver
e.Effect = DragDropEffects.Move
End Sub
Private Sub DataGridView1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
dragindex = DataGridView1.HitTest(e.X, e.Y).RowIndex
If dragindex > -1 Then
Dim dragSize As Size = SystemInformation.DragSize
dragrect = New Rectangle(New Point(CInt(e.X - (dragSize.Width/2)), CInt(e.Y - (dragSize.Height/2))), dragSize)
Else
dragrect = Rectangle.Empty
End If
End Sub
Private Sub DataGridView1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseMove
If (e.Button And MouseButtons.Left) = MouseButtons.Left Then
If (dragrect <> Rectangle.Empty AndAlso Not dragrect.Contains(e.X, e.Y)) Then
Me.DoDragDrop(DataGridView1.Rows(dragindex), DragDropEffects.Move)
End If
End If
End Sub
.
특정 행 드롭 단추가 해제되면 (일반적으로 :)
그러나 마음이 바뀌고 ESC 키를 누르면 커서 아래의 사각형이 사라지지만 버튼을 놓으면 떨어지는 현상이 발생합니다.
끌기가 이미 시작될 때 취소하려면 어떻게해야합니까 (ESC 키 사용)?
안녕하세요 Varocarbas. 솔루션은 작동하지만 추가 플래그 없이도 솔루션을 얻으려고합니다. 그렇지 않은 경우에는 하나의 부가적인 부울을 사용할 수 있습니다. –
@ user973238 하나의 깃발은 큰 거래가 아닙니다 (실제로 거래가 아님). 또한 나는 당신이보고하는 행동이 다른 많은 방법으로 설명 될 수 없다는 것을 두려워합니다. e.Data.GetData 정보를 분석하여 다른 이벤트 (제안한 것)를 말하는지 또는 의존하고 있는지를 알 수 있습니다. 두 솔루션의 차이 (첫 번째 솔루션이 가능할 경우, 내가 모르는 솔루션). 또한 글로벌 플래그는 다른 곳에서 사용할 수있는 일부 정보 (삭제 취소)를 제공합니다. 그러나 잘 ... 그것은 당신에게 달렸습니다. – varocarbas
광장이 사라지면 반드시 뭔가가 발생합니다. 하지만 구체적인 문제를 없애기 위해 당신의 제안을 받아 들일 것입니다. 충고에 감사하다. –