Это не может быть достигнуто автоматически. Вам нужно будет сделать это вручную. Лучший способ сделать это - правильно обрабатывать события cellvalidating и cellvalidated. И отмените событие, если ячейки пусты. Вы также можете установить свойство AllowUserToAddRows = false и вручную добавить новую строку, например. нажатием кнопки:
// source is IBindingSource
MyObject newObject = this.source.AddNew();
DataGridViewRow row = this.dgv.Rows[this.source.IndexOf(newObject)];
row.Selected = true;
int maxSelectedOrder = this.source.IndexOf(newObject );
int minSelectedOrder = this.source.IndexOf(newObject );
int displayedRows = this.dgv.Rows.GetRowCount(DataGridViewElementStates.Displayed);
int firstDisplayed = this.dgv.FirstDisplayedScrollingRowIndex;
int lastDisplayed = displayedRows + firstDisplayed - 1;
if (maxSelectedOrder - 1 > lastDisplayed && minSelectedOrder - 1 > firstDisplayed)
{
int firstToDisplay = displayedRows + firstDisplayed - 1 - (displayedRows - 1);
if (firstToDisplay > 0)
{
this.dgv.FirstDisplayedScrollingRowIndex = firstToDisplay;
}
}
this.dgv.CurrentCell = row.Cells[0];
this.dgv.Focus();