hi
back color of ComboBox in DataGridView will change to black when selectedindex change event will finish and focus on next cell
my code:
private void _dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (_dgv.CurrentRow != null)
{
ComboBox col1Combo = e.Control as ComboBox;
if (col1Combo != null)
{
if (_dgv.CurrentCell.ColumnIndex == 1)
{
col1Combo.SelectedIndexChanged += col1Combo_SelectedIndexChanged;
}
}
}
}
private void col1Combo_SelectedIndexChanged(object sender, EventArgs e)
{
if (_dgv.CurrentCell.ColumnIndex == 1)
{
DataGridViewComboBoxCell Column_ModemList = (DataGridViewComboBoxCell)this._dgv.CurrentRow.Cells[2];
Column_ModemList.Items.Clear();
_dgv.CommitEdit(DataGridViewDataErrorContexts.Commit);
((ComboBox)sender).BackColor = Color.white;
if (_dgv.CurrentCell.EditedFormattedValue.ToString() == "aa")
{
Column_ModemList.Items.Add("bb");
Column_ModemList.Items.Add("cc");
}
else if (_dgv.CurrentCell.EditedFormattedValue.ToString() == "hh")
{
Column_ModemList.Items.Add("ss");
}
else if (_dgv.CurrentCell.EditedFormattedValue.ToString() == "fff")
{
Column_ModemList.Items.Add("rrr");
}
((ComboBox)sender).BackColor = Color.white;
_dgv.CurrentCell.Style.BackColor = System.Drawing.Color.white;
}
}
private void _dgv_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (_dgv.IsCurrentCellDirty)
{
_dgv.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
private void _dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
_dgv.CurrentCell.Style.BackColor = System.Drawing.Color.white;
}
}