Вам нужно обработать событие ComboBoxValidating, а затем добавить его туда. Вот некоторый код:
private void HandleEditShowing(
object sender, DataGridViewEditingControlShowingEventArgs e)
{
var cbo = e.Control as ComboBox;
if (cbo == null)
{
return;
}
cbo.DropDownStyle = ComboBoxStyle.DropDown;
cbo.Validating -= HandleComboBoxValidating;
cbo.Validating += HandleComboBoxValidating;
}
private void HandleComboBoxValidating(object sender, CancelEventArgs e)
{
var combo = sender as DataGridViewComboBoxEditingControl;
if (combo == null)
{
return;
}
//check if item is already in drop down, if not, add it to all
if (!combo.Items.Contains(combo.Text))
{
var comboColumn = this.dataGridView1.Columns[
this.dataGridView1.CurrentCell.ColumnIndex] as
DataGridViewComboBoxColumn;
combo.Items.Add(combo.Text);
comboColumn.Items.Add(combo.Text);
this.dataGridView1.CurrentCell.Value = combo.Text;
}
}
Поэтому, когда вы обрабатываете событие EditingControlShowing, подключитесь к событию Validating в комбобоксе. Затем это событие сработает, как только пользователь введет какой-либо текст в поле со списком DataGridView и выложит из него вкладки. В этот момент вам необходимо добавить его в само поле со списком, а также в фактический DataGridViewColumn, чтобы все остальные строки в DataGridView имели это значение.