Удаление последней записи из BindingList Выбирает последнюю строку, вызывая DataGridView для прокрутки - PullRequest
2 голосов
/ 18 марта 2011

У меня есть DataGridView на форме, и, когда я получаю новые данные, я вставляю записи в начало BindingList, который связан с DataGridView.Если для появления вертикальной полосы прокрутки достаточно записей, она остается в верхней части списка.Так что я всегда вижу последнюю запись вверху списка.До этого момента все работало нормально.

Однако, когда я добавляю код для удаления последней записи списка, когда он становится слишком длинным, автоматически выбирается последняя запись в списке, в результате чего полоса прокрутки «прокручивается»до последней записи в списке полностью внизу DataGridView.Я даже добавил вызов ClearSelection () до и после вызова RemoveAt, но он по-прежнему прокручивается вниз.

Как я могу предотвратить это поведение?

1 Ответ

1 голос
/ 18 марта 2011

Вы всегда можете получить индекс или другой такой идентификатор выбранного вами DataGridViewRow до удаления записи.

В событии bindingSource Changed вы можете затем проанализировать ваши данные и установить правильную строку.

Чтобы установить первый отображаемый DataGridViewRow, используйте:

DataGridView1.FirstDisplayedScrollingRowIndex;

Чтобы выбрать тот же DataGridViewRow, используйте:

DataGridView1.Rows[DataGridView1.FirstDisplayedScrollingRowIndex].Selected = true;

Не забудьте проверить ошибку, чтобы убедиться, что значение индекса не равно -1 (ни один не выбран).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...