Binding the grid to a strongly typed object rather than something like a DataTable helps reduce the errors in your code when you need to work with the object because of the compiler checks. In order to get the strongly typed object when a user clicks on row you can use the RowEvent as shown below:
Private Sub DataGridView1_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.RowEnter
Dim Persons As List(Of Person) = CType(Me.DataGridView1.DataSource, List(Of Person))
Dim SelectedPerson As Person = Persons(e.RowIndex)
MsgBox(SelectedPerson.Name)
End Sub