У меня была такая же ситуация, и я даже использовал клавиши ускорения для кнопки сохранения для сохранения значений сетки. Когда я нажимаю кнопку «Сохранить», фокус теряется от DGV и, следовательно, значение ячейки фиксируется, но когда я использую клавиши ускорения, фокус не теряется от DGV, следовательно, фиксация значения ячейки не происходит.
Посмотрев на ответ Амит Кармакар из любопытства, я попробовал этот ответ, и он сработал. Чтобы узнать больше деталей, я пошел в отладку DGV и обнаружил, что это действительно то же самое, что commitedit, который почему-то не работает, если вы используете его при нажатии кнопки сохранения.
Когда мы устанавливаем для CurrentCell из DGV значение NULL, перед его установкой в NULL DGV сначала получает отредактированное значение и помещает его в значение ячейки, а затем устанавливает для CurrentCell REFERENCE значение NULL. Здесь это не означает, что он устанавливает пустую ячейку DGV. Следовательно, это прекрасно работает для вышеуказанной проблемы.
Примечание. Это решение может работать некорректно, если у вас есть события проверки для ячейки и если пользователь вводит неверные данные, которые не пройдут проверку. В этом случае установка текущей ячейки на ноль также не удалась, поскольку она не может передать значение в ячейку.
Я дал это объяснение, когда поднял вопрос об ответе Амит Кармакар, спрашивая, как это возможно. Я подумал, что это может помочь другим, поэтому отбросил это объяснение как ответ.