我有一个带有很多列的DataGridView导致水平滚动条。但是,当我一直向右滚动并对列进行排序时,datagridview会稍微重新定位,但滚动条一直保持在右侧。
我想停止此行为并将网格保持在网格排序之前的位置,并且如果可能的话,我想继续在网格中使用自动排序。
我发现这个link并且这个人遇到了同样的问题,但是,由于我没有进行手动排序,因此提出的解决方案似乎不适用。
有什么想法吗?
答案 0 :(得分:2)
我通过以下方式解决了这个问题。
我订阅了DataGridView.Scroll事件,如果ScrollOrientation是Horizontal,那么我将成员变量设置为滚动的NewValue。
然后我订阅了DataGridView.Sorted事件。在这种情况下,我将HorizontalScrollingOffset设置为成员变量。
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;
}