I ran into the same problem.
Hard to believe the Rows.Find does not tell the binding source to change to the newly found record?
I couldn't find anything on the Find but I did manage to scrounge this method which works.
Add this line after the
MessageBox.Show(CType(Rowlocated(1), String)) line:
Me.PersonBindingSource.Position = _
Me.PersonBindingSource.Find("PersonID", _
CType(pkvalue, Integer))
Note: That's all in one line. I used the underscore line continuation to break it.
That line will position the Binding Source to the record that is found by matching the "PersonID" column name (or property) with the value in pkvalue.
Oddly enough, this will work for any Column Name too.
Me.PersonBindingSource.Position = _
Me.PersonBindingSource.Find("City", "Chicago")
Insert this line and the Binding Source position will be changed to the first record with the City name of Chicago.
I still think the FIND method is supposed to position the binding source to the "FOUND" record though.
It may be another one of those "quirks" of
VB 2005 like the "Copy If Newer" table adapter update problem.
I'm still looking to see what I can "Find"!