Not without some fancy footwork!
It appears that the DataGrid control doesn't expose enough stuff to do this easily, but if you create your own class that inherits from DataGrid, you can do it.
I created a new class, like this:
Public Class MyDataGrid
Public ReadOnly Property Scrollbar()
Public Sub ScrollToRow(ByVal Row As Integer)
New ScrollEventArgs(ScrollEventType.ThumbPosition, Row))
This class exposes the protected VertScrollbar and GridVScrolled members of the DataGrid class. I created a form using standard DataGrid controls, laid things out as I wanted them, set up the data binding and so on, and then modified the form's code to use MyDataGrid instances rather than DataGrid instances.
Finally, I added code to trap the Scroll event of DataGrid1's vertical scroll bar (my form included a SqlDataAdapter component filling two DataSet components--you'll need to disregard my data handling and use your own):
Private WithEvents vsb1 As VScrollBar
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
vsb1 = DataGrid1.Scrollbar
Private Sub DataGrid1_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.Scroll
That's it. Worked great. It doesn't handle all situations (what if you have relations in your grid? You have to make sure both grids are showing the same view of the relations, which can be done), but it does answer your original question. It was fun working out a solution!