Utiliza dos columnas, una para el combobox y otra para el listbox seleccionado.
Cuando entres a Editar haces la columna textbox no visible y la combo visible y cuando Guardes la edición la del textbox visible y la del combo invisible.
Código:
public Form1()
{
//Column1-comboBox -- Column2-textBox ---Column3-otra columna para rellenar
InitializeComponent();
this.Column2.Visible = false;
dataGridView1.Rows.Add() ;
DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)(dataGridView1.Rows[0].Cells[0]);
cell.DataSource = new string[] { "1", "2", "3" };
Column1.DefaultCellStyle.NullValue = "Sin asignar";
DataGridViewTextBoxCell cell2 = (DataGridViewTextBoxCell)(dataGridView1.Rows[0].Cells[1]);
DataGridViewTextBoxCell cell3 = (DataGridViewTextBoxCell)(dataGridView1.Rows[0].Cells[2]);
cell2.Value = cell.Value;
cell3.Value="1";
botonEditar.Enabled= false;
}
private void botonGuardar_Click(object sender, EventArgs e)
{
DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)(dataGridView1.Rows[0].Cells[0]);
DataGridViewTextBoxCell cell2 = (DataGridViewTextBoxCell)(dataGridView1.Rows[0].Cells[1]);
this.Column2.Visible = true;
this.Column1.Visible = false;
cell2.Value = cell.Value;
botonGuardar.Enabled = false;
botonEditar.Enabled = true;
}
private void botonEditar_Click(object sender, EventArgs e)
{
this.Column1.Visible = true;
this.Column2.Visible = false;
botonGuardar.Enabled = true;
botonEditar.Enabled = false;
}
}
Espero te sea de ayuda.
Saludos,