На самом деле вы не взаимодействуете непосредственно с полосой прокрутки, скорее вы устанавливаете FirstDisplayedScrollingRowIndex
. Поэтому, прежде чем он перезагрузится, перехватите этот индекс, как только он перезагрузится, сбросьте его до этого индекса.
РЕДАКТИРОВАТЬ: Хороший момент в комментарии. Если вы используете DataGridView
, это будет работать. Если вы используете старую DataGrid
, то самый простой способ сделать это - унаследовать ее. Смотрите здесь: Связь
DataGrid имеет защищенный метод GridVScrolled, который можно использовать для прокрутки сетки к определенной строке. Чтобы использовать его, выведите новую сетку из DataGrid и добавьте метод ScrollToRow.
код C #
public void ScrollToRow(int theRow)
{
//
// Expose the protected GridVScrolled method allowing you
// to programmatically scroll the grid to a particular row.
//
if (DataSource != null)
{
GridVScrolled(this, new ScrollEventArgs(ScrollEventType.LargeIncrement, theRow));
}
}