Unless I'm missing something - you should be able to simply use the DataGridViewComboBoxColumn column type.
Depending on how you are adding your columns you either chose this type in the Type drop down in the Add Column dialog or add it programarically like so:
DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
dataGridView1.Columns.Add(col);
To achieve the effect you are after of a combobox that looks like a textbox until you edit it you set the DataGridViewComboBoxColumn DisplayStyle property to be Nothing:
List<string> names = new List<string> { "Joe", "Sally", "Kate" };
DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.DataSource = names;
col.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
dataGridView1.Columns.Add(col);
You can also access the underlying control of a DataGridView cell through the EditingControlShowing event.