Hola.
Abría que ver en detalle que estás haciendo, algo debes tener por ahí mal para que te de ese problema.
Te paso un ejemplo que lo probé y funciona bien. Fijate que al formulario le agrego un clase persona con una sola propiedad que es de tipo bool y luego creo una coleccion del tipo persona, esto es para no usar acceso a datos y vos lo puedas probar sin dramas.
Código:
Public Class Form1
Class persona
Private xEstado As Boolean
Public Property Estado() As Boolean
Get
Return xEstado
End Get
Set(ByVal value As Boolean)
xEstado = value
End Set
End Property
End Class
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim xPer1 As New persona
Dim xPer2 As New persona
xPer1.Estado = True
xPer2.Estado = False
Dim xPersonas As New List(Of persona)
xPersonas.Add(xPer1)
xPersonas.Add(xPer2)
DataGridView1.DataSource = xPersonas
For index As Integer = 0 To DataGridView1.Rows.Count - 1
Dim xValor As String = DataGridView1.Rows(index).Cells(0).Value.ToString()
MessageBox.Show("El valor es: " & xValor)
Next
End Sub
End Class
donde "Cells(0)" ese cero es el primer campo, como solo tengo uno va cero, vos podes probar con número primero para que te asegures que no este poniendo mal el nombre del campo.
Si te da error en "DataGridView1.Rows.Count - 1" proba poner -2 ya que si tu grilla permite agregar datos se agrega una fila nula al final de la grilla
Cualquier cosa avisa.