There are two parts to this problem if you are keeping it simple, and assuming that your datagrid is entirely viewable in one screen. The first thing you need to consider is how to draw a selection rectangle. There's an article
here[
^] that should be relatively easy to adapt to handle drawing the drag rectangle.
The second part follows the first part. The selection rectangle gives you the bounds that define, in screen co-ordinates. What you could do is iterate through each cell and see if the coordinates for the cell sit inside that rectangle. You are looking to translate the coordinates using something like
Point screenCoordinates = cell.PointToScreen(new Point(0, 0));
The value in screenCoordinates should give you the physical location of that cell (at the top left hand corner of the cell). If you are looking to see if the whole cell is in the selection rectangle, you will need to repeat for the bottom right hand corner.