带有同步滚动条的DataGridViews:调整大小时滚动条位置重置

时间:2016-02-12 04:05:32

标签: c# winforms datagridview scrollbar

我有两个DataGridViews,一个在另一个之上,在我的表单中有同步滚动条,就像在这个answer中一样。但是,同步只是一种方式,因为我已将网格的滚动条隐藏在顶部,仅显示两个网格的一个滚动条。滚动条时同步工作正常,但是当调整网格大小时,顶部网格的HorizontalScrollingOffset(具有以编程方式滚动的隐藏滚动条的那个)将重置为0。

我认为这是因为滚动条隐藏在顶部网格中,因此滚动条无法保持滚动值,但尚未能找到解决方案/解决方法。 有人知道如何在DataGridView调整大小时阻止隐藏滚动条的DataGridView重置吗?

1 个答案:

答案 0 :(得分:1)

    private int scrollPosition = 0;

    private void dataGridView_Scroll(object sender, ScrollEventArgs e)
    {
        // While scrolling, keep track of the scroll position
        if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
        {
            this.scrollPosition = e.NewValue;
        }
    }

    private void dataGridView_Resize(object sender, EventArgs e)
    {
        // Re-scroll back to where we were
        dataGridView.HorizontalScrollingOffset = this.scrollPosition;
    }