해결책이 있습니다. 다른 해결책이 있다면 당신은 환영
내가 가지고 사용하여이 이벤트 핸들러 ..
그냥 콤보 상자
에 항목을 추가 한 후 다음 줄을 추가하는 것은 // 우리는 DataGridView에 이러한 이벤트를 처리합니다 dataGridView1.CellEndEdit + = 새 DataGridViewCellEventHandler (dataGridView1_CellEndEdit); dataGridView1.EditingControlShowing + = 새 DataGridViewEditingControlShowingEventHandler (dataGridView1_EditingControlShowing); }
void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (cbm != null)
{
// Here we will remove the subscription for selected index changed
cbm.SelectedIndexChanged -= new EventHandler(cbm_SelectedIndexChanged);
}
}
void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
// Here try to add subscription for selected index changed event
if (e.Control is ComboBox)
{
cbm = (ComboBox)e.Control;
if (cbm != null)
{
cbm.SelectedIndexChanged += new EventHandler(cbm_SelectedIndexChanged);
}
currentCell = this.dataGridView1.CurrentCell;
}
}
void cbm_SelectedIndexChanged(object sender, EventArgs e)
{
// Invoke method if the selection changed event occurs
BeginInvoke(new MethodInvoker(EndEdit));
}
void EndEdit()
{
// Change the content of appropriate cell when selected index changes
if (cbm != null)
{
DataRowView drv = cbm.SelectedItem as DataRowView;
if (drv != null)
{
this.dataGridView1[currentCell.ColumnIndex + 1, currentCell.RowIndex].Value = drv[2].ToString();
this.dataGridView1.EndEdit();
}
}
}
}