Для прокрутки сетки данных я использую следующий код:
dataGridView1.FirstDisplayedScrollingRowIndex = currentRowIndexInGridView;
dataGridView1.Update();
Это прекрасно работает для строк, которые не находятся в нижней части сетки.
Если я использую его для нижних строк, то установщик не устанавливает его на желаемое значение, когда я проверяю его во время отладки.
Например. Я устанавливаю FirstDisplayedScrollingRowIndex = 103, но после назначения FirstDisplayedScrollingRowIndex имеет значение 90 и, следовательно, нужная строка не видна.
С определенной точки он останавливается, и я не вижу последние 5 строк.
Если я добавляю новые строки и настраиваю их для отображения, он прокручивается на одну, но последние 5 строк я больше не вижу.
Я думаю, что это как-то связано с тем, что некоторые из моих строк имеют разную высоту, и некоторые внутренние оценки DisplayedRowCount не выполняются ???
Есть ли способ обнаружения этой ситуации и затем принудительной прокрутки к нижней части сетки данных?
EDIT:
Важная часть сеттера FirstDisplayedScrollingRowIndex выглядит следующим образом в Reflector:
if (value > this.displayedBandsInfo.FirstDisplayedScrollingRow)
{
int rows = this.Rows.GetRowCount(DataGridViewElementStates.Visible, this.displayedBandsInfo.FirstDisplayedScrollingRow, value);
this.ScrollRowsByCount(rows, (rows > 1) ? ScrollEventType.LargeIncrement : ScrollEventType.SmallIncrement);
}
else
{
this.ScrollRowIntoView(-1, value, true, false);
}
Кажется, ошибка в вычислении переменной rows.