This has been plaguing me for a while as well and Zeeshanef's code helped but still not not totally solve it for me. Upon further investigation, I found if you use the DefaultValuesNeeded method to set some default values, it's possible the cell value might be set but the combobox Control that gets displayed in the EditingControlShowing method has an empty value/text. I solved it by tweaking the code like this:
private void datagridview1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is ComboBox)
{
ComboBox comboBox = (ComboBox)e.Control;
if (datagridview1.CurrentCell.Value == null
|| string.IsNullOrEmpty(datagridview1.CurrentCell.Value.ToString())
|| string.IsNullOrEmpty(comboBox.SelectedText)
)
{
comboBox.SelectedIndex = -1;
}
}
}