I'm sure I've seen code to do this before, but I can't seem to find it. How does one convert an X,Y coordinate into a row and column when the user clicks on the grid (say, for example, in the gri'd MouseUp event)?
You use the grid.PointToRowCol method. The point you pass in must be in the grid coordinates.
Point pt = grid.PointToClient(Control.MousePosition);
int rowIndex, colIndex;
grid.PointToRowCol(pt, out rowIndex, out colIndex);
If you are in one of the grid's mouse events, the e.X and e.Y are in the grid's coordiante system, so you can just use
Point pt = new Point(e.X, e.Y);
to get the point and not have to call PointToClient.