Hello Kris,
You will have to react on MouseDown/MouseUp/MouseMove events. First, handle
the MouseDown event and MouseMove event to catch when the user starts
dragging a row header (use HitTest method to determine where exactly the
user has clicked). Then, capture a mouse and start continuously tracking
mouse pointer position (with the MouseMove event, perhaps). Whenever the
mouse pointer is over a grid row (you can determine this with the HitTest
method as well), draw some indicator below this row to notify the user the
row being dragged will be moved here (a horizontal line can be OK, I think).
Then, upon the user dropping the row being dragged (MouseUp event), you will
need to move the underlying data row to its new place.
That's basically it.