Вы можете перебрать все DataGridViewRows в DGV и проверить свойство Displayed
каждой строки. Когда вы обнаружите, что первое верно, это ваш первый отображаемый ряд. Продолжите цикл и проверку свойства строки Selected
.
Вот некоторый тестовый код:
int foundRowIndex = 0;
bool foundFirstDisplayedRow = false;
foreach (DataGridViewRow row in dataGridView.Rows) {
if (row.Displayed) {
foundFirstDisplayedRow = true;
Console.WriteLine(row.Cells[0].Value);
}
if (foundFirstDisplayedRow) {
foundRowIndex++;
if (row.Selected) {
// You've got what you need here in foundRowIndex.
}
}
}
В качестве бонуса вы можете проверить свойство Displayed 7-й строки, чтобы убедиться, что пользователь не делал ничего сумасшедшего, например, размер DGV, чтобы прекратить его отображение.