[英]Disable drag drop in other columns in datagridview
如何禁用datagridview中其他列的拖放? 就像我想禁用第1列中的拖放操作,其余部分都未禁用。 如何實現呢?
這是我的拖放代碼:
Private CR As Integer, CC As Integer, CV As Object
Private Sub DataGridView1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles DataGridView1.DragDrop
Dim ClientPoint As Point = DataGridView1.PointToClient(New Point(e.X, e.Y))
Dim hit As DataGridView.HitTestInfo = DataGridView1.HitTest(ClientPoint.X, ClientPoint.Y)
CR = hit.RowIndex : If CR < 0 Then Exit Sub
CC = hit.ColumnIndex : If CC < 0 Then Exit Sub
DataGridView1.Item(CC, CR).Value = CV
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
Dim hit As DataGridView.HitTestInfo = DataGridView1.HitTest(e.X, e.Y)
CR = hit.RowIndex : If CR < 0 Then Exit Sub
CC = hit.ColumnIndex : If CC < 0 Then Exit Sub
CV = DataGridView1.Item(CC, CR).Value : If CV Is Nothing Then Exit Sub
DataGridView1.DoDragDrop(CV, DragDropEffects.Move)
End Sub
實際上,您已經擁有了完成所需的一切,事實上,您已經差不多完成了。
命中測試信息包含您需要的所有信息。 只需修改您的代碼以檢查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
如果列索引為零,則意味着我們在第一列上,因此退出該方法,因為我們不希望能夠從中拖放項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.