Использование одной полосы прокрутки для управления двумя DataGridView

Я пытаюсь контролировать два DataGridView 'с видимой только одной из вертикальных полос прокрутки DataGridView.

Ответы на вопрос(3)

строк, вы можете сделать следующее. Я использую это для сравнения двух наборов результатов SQL рядом.

Установите обработчики событий Scroll на обоих элементах управления.

private void DataGridView1_Scroll(object sender, ScrollEventArgs e)
{
    DataGridView2.FirstDisplayedScrollingRowIndex =
        DataGridView1.FirstDisplayedScrollingRowIndex;
}

private void DataGridView2_Scroll(object sender, ScrollEventArgs e)
{
    DataGridView1.FirstDisplayedScrollingRowIndex =
        DataGridView2.FirstDisplayedScrollingRowIndex;
}

Grid1.Scroll += (s, ev) => Grid2.VerticalScrollBar.Value = Grid1.VerticalScrollBar.Value;

Редактировать: Мы можем't назначить Grid2.VerticalScrollingOffset, как я изначально предлагал, так какСвойство ReadOnly.

 NthDeveloper07 февр. 2014 г., 08:39
VerticalScrollingOffset является свойством только для чтения.
 MCattle07 февр. 2014 г., 17:33
Да ты'верно. Мы'Вместо этого мне придется использовать VerticalScrollBar.Value, например, в первом ответе. В этом случае, вместо того, чтобы бороться с пользовательским интерфейсом, ятакже предлагаю рассмотреть возможность объединения двух источников данных в один, если этовозможно по оригинальному сценарию.
protected void grid1_Scroll(object sender, ScrollEventArgs e)
{
    grid2.VerticallScrollBar.Value = e.NewValue;
}

Ваш ответ на вопрос