Semplicemente perchè hai scelto il modo più complicato per far visualizzare la ContextMenuStrip. La procedura utilizzata e la solita: popolare la ContextMenuStrip e impostare la proprietà .ContextMenuStrip della DataGridView con la ContextMenuStrip aggiunta al progetto.
Se utilizzi il metodo .Show, come hai fatto, dovrai anche dirgli dove visualizzarla e sicuramente non con:
visto che il DataGridViewCellEventArgs non espone la proprietà location. Dovrai utilizzare le coordinate del mouse sulla Datagrid o utilizzando il MousePosition oppure:
codice:
Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
ContextMenuStrip1.Show(DataGridView1, x, y)
End Sub
Dim x As Integer
Dim y As Integer
Private Sub DataGridView1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseMove
x = e.Location.X
y = e.Location.Y
End Sub
Ma la soluzione più semplice ed elegante mi sembra la prima.