Делая что-то вроде этого:
dataGridView1.CurrentCell = dataGridView1.Rows[index].Cells[0];
будет работать, только если виден первый столбец.Если он скрыт, вы получите исключение.Это безопаснее:
var column = dataGridView1.CurrentCell != null ?
dataGridView1.CurrentCell.ColumnIndex :
dataGridView1.FirstDisplayedScrollingColumnIndex;
dataGridView1.CurrentCell = dataGridView1.Rows[iNextHighlight].Cells[column];
Это сбросит выбор без прокрутки, если целевая строка уже находится на экране.Он также сохраняет текущий выбор столбца, который может иметь значение в тех случаях, когда вы разрешили встроенное редактирование.