Instead of trying to get the current row and column from the currentcell, you might try to get it using
int row, col;
Point pt = this.grid.PointToClient(Control.MousePosition);
if(this.grid.PointToRowCol(pt, out row, outcol, -1))
{
Control.WriteLine("row {0}, col {1}", row, col);
}
If you see -1, -1 returned from CurrentCell.RowIndex and CurrentCell.COlIndex, then that suggests the grid is in a state without a currentcell. So, maybe the grid has not finished moving the currentcell when the contextmenu is popped up in these cases (Maybe on teh initial click to an embedded cell).