2015-12-21 4 views
0

У меня возникла небольшая проблема с задержкой, когда я устанавливаю флажок и пытаюсь перетащить. Когда я выбираю один флажок и пытаюсь переместить его, он не будет двигаться. Если у меня есть этот флажок и нажмите на другую строку, попробуйте переместить ее, она будет работать. Он работает одинаково независимо от того, сколько я проверю, он не получит новую строку, не щелкнув где-то еще в первую очередь. Нужно ли мне добавить другое событие для обработки или получения того, что флажок теперь проверен?Задержка получения события click

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

Попробуйте добавить вызов ['datagridview.EndEdit()'] (https://msdn.microsoft.com/en-us/library/ms158620%28v=vs.110%29.aspx) в начале метод 'datagridview_MouseMove'. – Mark

+0

Не уверен, что относится к задержке, но попробуйте установить свойство EditMode вашей сетки EditOnEnter. – LarsTech

+0

@Mark спасибо, что сработали. Можете ли вы выразить это как ответ, чтобы я мог его принять. –

ответ

1

Добавление вызова datagridview.EndEdit() в начале метода datagridview_MouseMove будет совершать текущую операцию редактирования и обновления исходных данных, так что вы можете увидеть обновленное значение в коде.