Il mio obiettivo è:
caricare un DataGridView da un DataSet e impostare le celle di una colonna come ComboBox con i valori delle celle della colonna corrispondente del DataSet.
Nella mia ignoranza , con il codice sotto(una form con un DataGridView), sono riuscito a raggiungere il mio obiettivo ma ho dovuto aggiungere una copia(ds_copia) del DataSet originale(ds) per ottenere i dati della colonna. Altrimenti, usando il DataSet originale, la "cella ComboBox" contiene tutti i dati della colonna ma non riesco a modificare il valore in base alla sua selezione.
Intuisco che la copia del DataSet iniziale non sia una buona idea....consigli?

codice:
Public Class Form1
    Dim ds As New DataSet
    Dim ds_copia As New DataSet

    Private Sub Form1_Load() Handles MyBase.Load

        ds.DataSetName = "prova"
        ds.Tables.Add("colonne")
        ds.Tables("colonne").Columns.Add("nome")
        ds.Tables("colonne").Columns.Add("testo")

        Dim riga(1) As String
        For a = 1 To 3
            riga(0) = "nome" & a
            riga(1) = "testo" & a
            ds.Tables("colonne").Rows.Add(riga)
        Next

        ds_copia = ds.Copy

        Dim colonna_nome As New DataGridViewComboBoxColumn
        colonna_nome.DataSource = ds_copia.Tables("colonne")
        colonna_nome.DisplayMember = "nome"
        colonna_nome.HeaderText = "nome"

        Dim colonna_testo As New DataGridViewTextBoxColumn
        colonna_testo.HeaderText = "testo"

        DataGridView1.Columns.Add(colonna_nome)
        DataGridView1.Columns.Add(colonna_testo)
        DataGridView1.AutoGenerateColumns = False
        DataGridView1.DataSource = ds.Tables("colonne")

        DataGridView1.Columns(0).DataPropertyName = "nome"
        DataGridView1.Columns(1).DataPropertyName = "testo"

    End Sub

End Class