Ok I Have Found A Solution, using to publicly shared Variables, then storing the location the mouse is clicked when it is clicked any where on the control but only running the show context menu when the mouse down is on a cell.
Very Big Thank you to Sergey Alexandrovich Kryukov, for working through this with me
Public Shared MouseX As Integer
Public Shared MouseY As Integer
Then Use The Following Code For The Mouse Down On The Cell
Private Sub DgvDelays_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DgvDelays.MouseDown
MouseX = e.X
MouseY = e.Y
End Sub
And the Following Code In The Cell Mouse Down
Private Sub DgvDelays_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DgvDelays.CellMouseDown
Dim rowClicked As DataGridView.HitTestInfo = DgvDelays.HitTest(e.X, e.Y)
If e.Button = Windows.Forms.MouseButtons.Right AndAlso e.RowIndex > -1 Then
DgvDelays.ClearSelection()
Me.DgvDelays.Rows(e.RowIndex).Selected = True
CmsRightClick.Show(DgvDelays, New System.Drawing.Point(MouseX, MouseY))
End If
End Sub