Try this:
Private Sub DataGrid1_CellMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
On Error Resume Next
If e.Button = MouseButtons.Right Then
'Clear previous selections
For x As int32 = 0 To ds.Tables(0).Rows.Count() - 1
DataGrid1.UnSelect(x)
Next x
'select row under mouse click
Dim info As DataGrid.HitTestInfo = DataGrid1.HitTest(e.X, e.Y)
If info.Row > -1 Then
DataGrid1.CurrentRowIndex = info.Row
DataGrid1.Select(info.Row)
Application.DoEvents()
DataGridContextMenu.Show(Cursor.Position)
End If
info = Nothing
End If
End Sub