Я знаю, что это древний пост, но, надеюсь, я смогу помочь некоторым людям избежать моей путаницы.
Использование CellFormatting - это проигрыш, потому что он вызывает его каждый раз, когда что-либо касается клетки.В результате значение постоянно возвращается к значению по умолчанию.
Для меня работало то, что я обработал событие DefaultValuesNeeded так:
private void OnGridDefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
{
e.Row.Cells["Position"].Value = PositionEnum.Any;
}
Это позволило мне установить значение по умолчанию,и позволяет пользователю изменять значение.