Private Sub DataGrid1_MouseDown1(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseDown
Dim myGrid As DataGrid = CType(sender, DataGrid)
Dim hti As System.Windows.Forms.DataGrid.HitTestInfo
hti = myGrid.HitTest(e.X, e.Y)
Dim rowNum, columnNum, j As Integer
If e.Button = MouseButtons.Right And e.Clicks = 1 Then '如果是鼠标右击
' MsgBox("1")
Select Case hti.Type '
Case System.Windows.Forms.DataGrid.HitTestType.Cell, System.Windows.Forms.DataGrid.HitTestType.RowHeader, System.Windows.Forms.DataGrid.HitTestType.ColumnHeader
Dim mytable As New DataTable
mytable = ds.Tables(0) '表的数据源
Dim i As Int16
i = 0
For i = 0 To mytable.Rows.Count - 1
If mytable.Rows(i).Item(0) = Me.DataGrid1.Item(hti.Row, 0) Then
j = i '最终列号 j
End If
Next
End Select
End If
End Sub
End Class
我是这样做的,因为排序后列会乱。我在表了加了一个自增的ID字段,因为是唯一的写了一个循环
得到最终列号。
rowNum的获得方法很多,但是排序后会乱,寻求更好的解决方法。