Вот статья CodeProject, которая показывает, что вы хотите сделать:
Обман DataGridView
Это C #, но это также довольно просто.
Обсуждаемый в статье подход заключается в создании подкласса DataGridView для переопределения события ProcessDialogKey для обработки логики выбора следующей ячейки в той же строке или переноса в первый столбец в следующей строке.
Большинство подходов к выполнению того, что вы хотите сделать, включают создание подкласса DataGridView.