DataGridView Sort稍微重新定位网格的水平位置

时间:2010-08-04 22:35:47

标签: winforms datagridview .net-2.0

我有一个带有很多列的DataGridView导致水平滚动条。但是,当我一直向右滚动并对列进行排序时,datagridview会稍微重新定位,但滚动条一直保持在右侧。

我想停止此行为并将网格保持在网格排序之前的位置,并且如果可能的话,我想继续在网格中使用自动排序。

我发现这个link并且这个人遇到了同样的问题,但是,由于我没有进行手动排序,因此提出的解决方案似乎不适用。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我通过以下方式解决了这个问题。

我订阅了DataGridView.Scroll事件,如果ScrollOrientation是Horizo​​ntal,那么我将成员变量设置为滚动的NewValue。

然后我订阅了DataGridView.Sorted事件。在这种情况下,我将Horizo​​ntalScrollingOffset设置为成员变量。


int _horizontalOffsetStop;

private void Grid_Scrolled(object sender, ScrollEventArgs e)
{
     if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
     {
          _horizontalOffsetStop = e.NewValue;
     }
}

private void Grid_Sorted(object sender, EventArgs e)
{
     myGrid.HorizontalScrollingOffset = _horizontalOffsetStop;
}