У вас уже есть все, что вам нужно для того, чтобы делать то, что вы хотите, но вы уже почти сделали это.
Информация о проверке удара содержит всю необходимую вам информацию.Просто измените свой код, чтобы проверить ColumnIndex
и соответственно изменить курсор (эффект):
Private Sub DataGridView1_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragOver
Dim ClientPoint As Point = DataGridView1.PointToClient(New Point(e.X, e.Y))
Dim hit As DataGridView.HitTestInfo = DataGridView1.HitTest(ClientPoint.X, ClientPoint.Y)
If hit.ColumnIndex <= 0 Then
'If we're at the first column (or no column) display a "stop" cursor.
e.Effect = DragDropEffects.None
Else
'For all other columns display a "move" cursor.
e.Effect = DragDropEffects.Move
End If
End Sub
Затем в и ваш DragDrop
обработчик событий и событие MouseDown
обработчик, измените это:
CC = hit.ColumnIndex : If CC < 0 Then Exit Sub
на это:
CC = hit.ColumnIndex : If CC <= 0 Then Exit Sub
Если индекс столбца равен нулю, это означает, что мы находимся на первом столбце, поэтому выйдите из метода, так как мы нея не хочу иметь возможность перетаскивать элементы из него / из него.