代码之家  ›  专栏  ›  技术社区  ›  Adam

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

  •  1
  • Adam  · 技术社区  · 16 年前

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

    我想停止这种行为,保持网格在排序前的位置不变,如果可能的话,我想继续在网格中使用自动排序。

    我找到这个了 link 这个人也有同样的问题,但是,这里提出的解决方案似乎不适用,因为我没有做手工排序。

    有什么想法吗?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Adam    16 年前

    我通过以下步骤解决了这个问题。

    我订阅了DataGridView.Scroll事件,如果ScrollOrientation是水平的,那么我将成员变量设置为Scroll的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;
    }
    
    
    推荐文章