Hola.
Varias veces he tenido ese problema usando colecciones de objeto. Lo podes resolver de varias maneras. Yo supe en una oportunidad hacer lo que se llama una clase auxiliar donde en mi caso tenia una clase cliente y otra localidades y quería mostrar en la misma grilla el cliente y un combo de localidades. Para hacerlo facil cree una clase clientesAux que tenía todo lo de clientes pero ademas le agrege una propiedad "LocalidadesListado" que era un List del tipo Localidades, asi cuando crear la clase ClientesAux luego le agregas a su propiedad LocalidadesListado todo las localidades existentes.
La otra que ahora esta mejor aun es que en visual studio 2008 podes usar Linq y con esto podes hacer directamente un select donde unis campos de colecciones de objetos como si fueran dos tablas, un lujo!!!
La otra que podes hacer es sino intentar agregar por código un campo de tipo combo y asignarle valores. Te paso un ejemplo básico, despues podes mejorarlo si te sirve:
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
Class Localidad
Private xNombre As String
Public Property Nombre() As String
Get
Return xNombre
End Get
Set(ByVal value As String)
xNombre = value
End Set
End Property
End Class
Dim xBind As New BindingSource
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)
xBind.DataSource = xPersonas
DataGridView1.DataSource = xBind
With DataGridView1
Dim ColumnCar As New DataGridViewComboBoxColumn
Dim xLoc1 As New Localidad
Dim xLoc2 As New Localidad
xLoc1.Nombre = "Localidad 1"
xLoc2.Nombre = "Localidad 2"
Dim xLocalidades As New List(Of Localidad)
xLocalidades.Add(xLoc1)
xLocalidades.Add(xLoc2)
With ColumnCar
.DataPropertyName = "Localidad"
.HeaderText = "Localidad"
.Width = 80
.DataSource = xLocalidades
.DisplayMember = "Nombre"
.ValueMember = "Nombre"
End With
.Columns.Add(ColumnCar)
End With
End Sub
End Class