延迟点击事件

时间:2015-12-21 20:14:57

标签: vb.net datagridview

当我选中一个复选框并尝试拖放时,我的延迟有点问题。当我选择一个复选框并尝试将其移动时,它就不会移动。如果我单击该复选框并单击另一行,则尝试移动它将起作用。它的工作原理是相同的,无论我检查了多少都没有先获得最新的行而不先点击其他地方。我是否需要添加另一个事件来处理或选择现在已经检查过的框?

Private Sub datagridview_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles datagridview.MouseDown
     mouseDownPosition = e.Location
End Sub

Private Sub datagridview_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles datagridview.MouseMove
If CheckMouseMovement(sender, datagridview, e) Then
    listofBuilds = New List(Of Build)
    For Each row As DataGridViewRow In dataGridView.Rows
        If Convert.ToBoolean(row.Cells.Item(0).Value) Then
            Dim t As Build = DirectCast(row.DataBoundItem, Build)
            listofBuilds.Add(t)
        End If
    Next
    If listofBuilds.Count > 0 Then
        dataGridView.EndEdit()
        dataGridView.DoDragDrop(sender, dropEffect)
    End If
End If
End Sub

 Private Sub TabControl_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TabControl.DragEnter
     e.Effect = DragDropEffects.All
 End Sub

Private Sub TabControl_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TabControl.DragDrop
    Dim DropPage As TabPage = GetTabPageByTab(TabControl.PointToClient(New Point(e.X, e.Y)))
    If DropPage IsNot TabControl.SelectedTab Then
        If DropPage Is Page1 Then
        If DropPage Is Page2 Then
        If DropPage Is Page3 Then
          //etc
        End If
    End If
End Sub

Private Function GetTabPageByTab(ByVal point As Point) As TabPage
    For i As Integer = 0 To TabControl.TabPages.Count - 1
        If TabControl.GetTabRect(i).Contains(point) Then
             Return TabControl.TabPages.Item(i)
        End If
    Next
    Return Nothing
End Function

1 个答案:

答案 0 :(得分:1)

partial()方法的开头添加对datagridview.EndEdit()的调用将提交当前编辑操作并更新源数据,以便您可以在代码中看到更新的值。